带有浮点数的简单算术将四舍五入到错误值
simple arithmetic with floats is rounded to wrong value
在我的程序中,我有一个特定数字的运行总数,在主数之前声明为浮点数,以便通用,并且在每次迭代中我都会从中加减浮点数。
这些浮点数始终是介于 0 和 10 之间的数字,到小数点后一位。但是,总数偶尔会偏离这个 1.d.p. 精度(非常罕见,但我正在处理数十亿次迭代),偏离 0.01(即我将 2.4 加到 15.9 并得到 18.31)
这种微小的偏差会导致程序崩溃,那么有什么方法可以缓解它吗?
如果您总是有 1 位小数,请将所有数字乘以 10 并使用整数算术!通常,二进制浮点不能表示十进制小数值。使用二进制浮点数进行计算会导致小误差被放大。使用整数进行计算是精确的。
0.1
是二进制中的重复小数,因此无法准确表示。 最好使用整数和10
的倍数进行计算。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- 找到printf的意外错误,该格式为0.1F,用于四舍五入数字
- 带有浮点数的简单算术将四舍五入到错误值
- 四舍五入函数返回错误的双估计