我在articles和MSDN中多次阅读float
(或double
)没有真实世界整数或小数值的精确表示。正确!当得到相等检查错误或者在断言简单的加法或减法测试时,这是可见的。
还有人说float并没有像0.1这样的十进制值的精确表示,但是如果我们在像float a = 0.1f;
这样的visual studio中声明一个float,那么在调试时它们如何显示精确的0.1?它应该显示类似0.09999999..
的内容。我在哪里可以找到理解它的链接。
这是一个门外汉的问题,或者可能是我仍然缺少一些概念!
答案 0 :(得分:15)
如何在调试时显示精确的0.1
0.1不是浮点数的确切值。它恰好是您在原始赋值中指定的内容,但这不是float的值。我可以看到它令人困惑:)我怀疑调试器显示的是最短的字符串表示,它明确地以相同的值结束。
尝试使用:
float a = 0.0999999999f;
...然后我怀疑在调试器中你会看到 为0.1
。
因此,并不是调试器显示的是“更精确”的值 - 而是显示“更方便”的表示。
如果要显示存储在float或double中的完全值,我有some code you can use for that。