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

标签 c# floating-point

为什么下面的程序会打印它打印的内容?

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

        Console.WriteLine(f1 > f2);
    }
}

输出是

false

最佳答案

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

我推荐阅读 What Every Computer Scientist Should Read About Floating Point

关于c# - 为什么 C# 中的浮点运算不精确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/753948/

相关文章:

c# - PDF 的目录打印正确,但 RTF 的目录打印不正确

c# - 即发即弃方法

Python 输出到文件更高的浮点精度

java - java junit测试选择哪个增量以避免浮点错误

c# - 在 C# 中查看类型 T 的内部实现的可能性

c# - WebRequest 的 GetResponseAsync 不稳定,而 GetResponse 则不是

c# - VBA 和 "Class doesn' t 支持自动化或不支持预期的界面”

python - 如何计算 1 的对数减去 python 中给定小数的指数

c++ - 如何用文本文件中的另一个数字替换特定数字 (C++)

C++ == 运算符不工作