为什么以下程序打印其打印内容?
class Program { static void Main(string[] args) { float f1 = 0.09f*100f; float f2 = 0.09f*99.999999f; Console.WriteLine(f1 > f2); } }
输出是
false
浮点数只有这么多的精度。如果看到f1 == f2,那是因为任何差异都需要比32位浮点数所能表示的精度更高的精度。
我建议阅读每位计算机科学家应阅读的有关浮点的知识