C++:这个浮点错误问题的解决方案?

C++: Solution to this floating point error problem?

这是我的代码示例:

float a = 0.f;
float b = 5.f;
float increment = 0.1f;
while(a != b)
    a+=increment;

这将导致无限循环。有没有什么解决办法,或者唯一的办法就是设置一个公差?

尽可能避免使用浮点计算。在这种情况下,您可以将数字乘以 10,最后除以 10,将其视为整数。

float a, b, increment;
int a_i = 0;
int b_i = 50;
int increment_i = 1;
while(a_i != b_i)
    a_i+=increment_i;
a = a_i / 10.f,
b = b_i / 10.f;
increment = increment_i / 10.f;