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

问题描述

这是我的代码示例:

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

这将导致无限循环。是否有任何解决方案,或者解决此问题的唯一方法是设置容差?

标签: c++floating-pointprecision

解决方案


尽可能避免使用浮点计算。在这种情况下,您可以将数字视为整数,将它们乘以 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;

推荐阅读