如何在C ++中为循环解决这个问题?

时间:2015-09-10 04:01:39

标签: c++

for(float i=1; i<=1.5; i+=0.1) 
{
  // statements
}

上述C ++ for循环运行5次。这不应该运行6次吗?

1 个答案:

答案 0 :(得分:2)

这是浮点精度误差的一个很好的例子。精确值,如0.1,0.2的倍数,无法在计算机内存中精确表示。您希望使用EPSILON(http://en.cppreference.com/w/cpp/types/numeric_limits/epsilon

进行比较

这样的东西
for (float i = 1; fabs(1.5 - i) < EPSILON; i+=0.1) {
  //statements
}