可能重复:
为什么十进制数不能用二进制精确表示?
我正在为 C++ 下的数学使用开发一个非常简单的算法。
而且我有一个名为“step”的浮点变量,每次我完成一个while循环,我需要将step除以10。
所以我的代码有点像这样,
float step = 1;
while ( ... ){
//the codes
step /= 10;
}
在我愚蠢的简单逻辑中,结果很好。step 将除以 10,从 1 到 0.1,从 0.1 到 0.01。
但它没有,而是出现了 0.100000000001 之类的东西。我就像“这到底是什么”
有人可以帮我解决这个问题。这可能与我不完全理解的数据类型本身有关。因此,如果有人可以进一步解释,将不胜感激。