迭代C++中的浮点范围

Ale*_*See 1 c++ floating-point floating-accuracy

我想迭代一系列浮点数,例如在下面的例子中.

for (double d = 1.0; d <= 2.0; d += 0.1)
{
   cout << d << endl;
}
Run Code Online (Sandbox Code Playgroud)

因为不可能准确地表示0.1,所以不打印2.0的最后一个值.

如何确保不会省略此情况和类似情况中的最后一个值?

jua*_*nza 11

循环整数,除以浮点数:

#include <iostream>
#include <iomanip>

int main()
{
  std::cout << std::setprecision(1) << std::fixed;

  for (int d = 10; d <= 20; ++d)
  {
     std::cout << d/10. << std::endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

输出:

1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0
Run Code Online (Sandbox Code Playgroud)