我正在测试来自脑筋急转弯:的代码。
double d1 = 1.000001;
double d2 = 0.000001;
Console.WriteLine((d1 - d2) == 1.0);
结果是“False”。当我改变数据类型时:
decimal d1 = 1.000001M;
decimal d2 = 0.000001M;
decimal d3 = d1-d2;
Console.WriteLine(d3 == 1);
程序输出了正确答案:"True"。
这个问题只使用了浮点数后6位数字。15位数字的精度发生了什么?
System.Decimal
具有任意精度。当我说“允许精确表示给定的浮点数”时,我真正意思是指示例中的那个数字。我也会编辑我的答案以反映这一点。 - Andrew Hare