c++ - 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;
推荐阅读
- swift - Swift Vapor:如何读取 JSON 文件?
- python - 当在函数内的 if 语句的条件中使用全局变量时,Python 会抛出 UnboundLocalError
- ios - 执行自动转场
- javascript - 如何通过按下选项卡按钮遍历 div 并显示其全部内容
- hyperledger-fabric - 在 Hyperledger Composer 中验证和处理交易提案请求
- ionic-framework - Ionic 3 popover on select,如何使用检查图标而不是圆圈?
- karate - 当任何一个步骤失败时,Karate -TestNG 停止执行
- ethereum - Solidity:在映射中检索结构数组的值
- python - Python3:请求模块头
- c++ - 如何在 C++ 中从现有的模板函数定义新函数