articles我看了很多遍|和 MSDN,float
(或 double
)没有真实世界整数或小数值的精确表示。正确的 !当相等性检查出错或断言简单的加法或减法测试时,这是可见的。
也有人说 float 没有像 0.1 这样的十进制值的精确表示,但是如果我们在 visual studio 中声明一个像 float a = 0.1f;
这样的 float,它们是如何显示的调试时精确 0.1?它应该显示类似 0.09999999..
的内容。我在哪里错过了一个链接来理解它。
这是一个外行问题,或者我可能仍然缺少一些概念!
最佳答案
how do they show exact 0.1 while debugging
0.1 不是 float 的精确值。它恰好是您在原始作业中指定的值,但这不是 float 的值。我可以看到它令人困惑 :) 我怀疑调试器正在显示最短的字符串表示形式,它明确地以相同的值结束。
尝试使用:
float a = 0.0999999999f;
...然后我怀疑在调试器中您会看到 that 也是 0.1
。
因此,并不是调试器显示的是“更准确”的值——而是它显示的是“更普遍方便”的表示。
如果你想显示存储在 float 或 double 中的精确值,我有some code you can use for that .
关于c# - 为什么 float 在声明时显示精确表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31066521/