一尘不染

为什么C#中的浮点运算不精确?

c#

为什么以下程序打印其打印内容?

class Program
{
    static void Main(string[] args)
    {
        float f1 = 0.09f*100f;
        float f2 = 0.09f*99.999999f;

        Console.WriteLine(f1 > f2);
    }
}

输出是

false

阅读 533

收藏
2020-05-19

共1个答案

一尘不染

浮点数只有这么多的精度。如果看到f1 == f2,那是因为任何差异都需要比32位浮点数所能表示的精度更高的精度。

我建议阅读每位计算机科学家应阅读的有关浮点的知识

2020-05-19