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