学习笔记N-174
计算精度问题
- 更新
- 内容块
- 10
- 阅读
- 约 1 分钟
- 路径
- 学习笔记 / C++ / C++基础
两个例子
1.在浮点数是否相等的判断时要让他们的差小于一个极小的数,而不是直接相等(<1e-9)
2.计算A>B× 二分之3时需要用十字相乘让两边同时乘来判断,而不能直接写a是否大于b乘2除以3
原理
计算机底层使用二进制浮点数(IEEE 754标准)来近似表示实数,绝大多数十进制小数无法被精确表示
直接原因:浮点数运算存在舍入误差(Round-off Error)
- •在二进制中,
0.1是一个无限循环小数(就像十进制的1/3 = 0.333...)。
- •当你写
double a = 0.1 + 0.2;时,计算机实际存储的是0.30000000000000004(略有偏差)。
- •如果你写
double b = 0.3;,它存储的是0.29999999999999999。