为什么 float 在声明时显示精确表示

Why float shows exact representation when declared

我在 articles 和 MSDN 中多次读到 float(或 double)没有真实世界整数或小数值的精确表示。正确的 !当相等性检查出错或断言简单的加法或减法测试时,这是可见的。

也有人说 float 没有像 0.1 这样的小数值的精确表示,但是如果我们在 visual studio 中声明一个像 float a = 0.1f; 这样的浮点数,它们如何显示精确的 0.1 而调试?它应该显示类似 0.09999999.. 的内容。哪里漏了一个link理解一下

这是一个外行问题,或者我可能仍然缺少一些概念!

how do they show exact 0.1 while debugging

0.1 不是浮点数的准确值。它恰好是您在原始作业中指定的值,但这不是浮点数的值。我可以看到它令人困惑 :) 我怀疑调试器正在显示最短的字符串表示形式,它明确地以相同的值结束。

尝试使用:

float a = 0.0999999999f;

... 然后我怀疑在调试器中你会看到 that as 0.1 as well.

因此,调试器并不是在显示 "more exact" 值,而是在显示 "more generally convenient" 表示。

如果要显示存储在浮点数或双精度数中的 精确 值,我有 some code you can use for that.