-1

在执行过程中,

我刚刚打开了即时窗口,然后输入了这样的内容,

?1.66 + 0.83

因此,由于此表达式,显示了以下内容,

2.4899999999999998

实际上,该表达式应该已经返回2.49,但它返回具有不同浮点的相同值。这有什么问题。?有什么办法可以解决这个问题吗?顺便说一句,我不想​​格式化上述值。

4

2 回答 2

14

这就是浮点数的工作原理。它们以某种程度的精度工作,当您编写1.66它时,它实际上可能存储在内存中1.660000000000000000011.65999999999999999内存中。所以当你开始把这些数字加在一起时,这个小错误就会加起来。

如果您想避免这种情况,您可以使用可以System.Decimal在大多数情况下解决此问题的数据类型(它使用不同的模型将值存储在保留确切值的内存中)。

例如,尝试

?1.66D + 0.83D

D 后缀表示该值是类型Decimal

于 2013-10-08T14:14:12.257 回答
0

即时窗口将值显示为小数位,这是其默认操作,如果您想要 2 个小数位,则需要应用格式,四舍五入。

于 2013-10-08T14:15:49.743 回答