C++:这个浮点错误问题的解决方案?
这是我的代码示例:
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;