for(float i=1; i<=1.5; i+=0.1)
{
// statements
}
上述C ++ for循环运行5次。这不应该运行6次吗?
答案 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
}