c++ - 如何在 C++ 中解决这个 for 循环?

标签 c++

<分区>

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

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

最佳答案

这是浮点精度错误的一个很好的例子。诸如 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
}

关于c++ - 如何在 C++ 中解决这个 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32492928/

相关文章:

c++ - 游戏如何围绕物体移动(一般来说)

python - 在 cython 中返回 C++ 对象(最好不是指针)

C++ 在程序中运行程序,两次

c++ - 子字大小标志的线程安全

c++ - std::string 的函数指针的 typedef 不起作用

c++ - 将 vector<char>* 传递给函数 getnameinfo

c++ - 使用 Directx10 渲染

c++ - 如何使用时间戳和严重性字符串?

c++ - 关于c++ try catch的一些问题

c++ - 读取文件,损坏的数据