我遇到了一个问题,我可以在Visual Studio 2010中的三个完全不相关的项目中重现这个问题,因此我认为这与.NET框架有关。
当我在项目中设置断点时,在下面的文本中输入以下文本进行评估:
“12500 + 6217.680 + 172.24”
我收到了这个:
“18889.920000000002”
请注意错误的小数位数。
我希望看到这个: “18889.92”
我可以在观察窗口中输入它,并且它可以正确评估。但是,不是在立即窗口。
是什么给出了?
答案 0 :(得分:2)
这是浮点数学的正常行为。我建议阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic。
如果要以特定精度显示此值,则应使用value.ToString(format)
以指定的精度格式化结果。
答案 1 :(得分:0)
如果使用m后缀表示数字是小数,而不是双数,结果将是您所期望的(至少在这种情况下)。
12500m + 6217.680m + 172.24m = 18889.92