double d1 = 1.000001;
double d2 = 0.000001;
Console.WriteLine((d1 - d2) == 1.0);
结果是“假”。当我更改数据类型时:
decimal d1 = 1.000001M;
decimal d2 = 0.000001M;
decimal d3 = d1-d2;
Console.WriteLine(d3 == 1);
程序写出正确答案:“真”。
这个问题只是在浮点数之后使用了 6 位数字。15位的精度发生了什么?