【发布时间】:2012-01-27 05:27:24
【问题描述】:
可能重复:
Why can't decimal numbers be represented exactly in binary?
我正在开发一个在 C++ 下使用的非常简单的数学算法。
而且我有一个名为“step”的浮点变量,每次我完成一个while循环,我需要将step除以10。
所以我的代码是这样的,
float step = 1;
while ( ... ){
//the codes
step /= 10;
}
在我愚蠢的简单逻辑中,结果很好。 step会被10除,从1到0.1,从0.1到0.01。
但它没有,而是出现了 0.100000000001 之类的东西。我就像“这到底是什么”
有人可以帮我解决这个问题吗?这可能与我不完全理解的数据类型本身有关。因此,如果有人可以进一步解释,将不胜感激。
【问题讨论】:
-
你将它除以 1,而不是 10。
-
这是一个很明显的打字错误。
-
Shane:请不要在此处重新输入内容。复制和粘贴。当人们发现他们花了 15 分钟调试一个从未存在的问题时,他们会感到非常沮丧和投反对票。 (好吧,我感到沮丧和投反对票。其他人可能反应更好。)
-
如果可以选择,您可以除以 2(或 8),这将为您提供更准确的值。
标签: c++ floating-point floating-accuracy inexact-arithmetic