在执行过程中,
我刚刚打开了即时窗口,我输入了这样的内容,
?1.66 + 0.83
因此,此表达式的结果显示了以下内容,
2.4899999999999998
实际上,表达式应该已经返回2.49
但是它返回了具有不同浮点的相同值。这有什么问题。?有没有可用于解决此问题的工作。?顺便说一句,我不想格式化上述值。
答案 0 :(得分:14)
这就是浮动数字的工作原理。它们具有一定程度的精确度,当您编写1.66
时,它实际上可能存储为1.66000000000000000001
或1.65999999999999999
在内存中。因此,当您开始将这些数字加在一起时,会出现小错误。
如果你想避免这种情况,你可以使用System.Decimal
数据类型来解决这个问题大多数场景(它使用不同的模型将值存储在内存中以保留精确值)。
例如,尝试
?1.66D + 0.83D
D
suffix表示该值的类型为Decimal
答案 1 :(得分:0)
即时窗口显示小数位的值,这是默认操作,如果你想要2位小数,则需要应用格式化。