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

时间:2015-06-26 06:38:33

标签: c# c++ .net floating-point

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

还有人说float并没有像0.1这样的十进制值的精确表示,但是如果我们在像float a = 0.1f;这样的visual studio中声明一个float,那么在调试时它们如何显示精确的0.1?它应该显示类似0.09999999..的内容。我在哪里可以找到理解它的链接。

enter image description here

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

1 个答案:

答案 0 :(得分:15)

  

如何在调试时显示精确的0.1

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

尝试使用:

float a = 0.0999999999f;

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

因此,并不是调试器显示的是“更精确”的值 - 而是显示“更方便”的表示。

如果要显示存储在float或double中的完全值,我有some code you can use for that