浮点数为何会出现精度误差,金额和边界比较应如何设计
简答题中等1008 次浏览
参考答案与解析
# 核心结论
浮点误差来自有限位宽的二进制表示。许多有限位十进制小数转换为二进制后是无限循环小数,只能舍入到最近的可表示值,所以0.1 + 0.2通常不会与浮点字面量0.3完全相等。这不是某种语言的缺陷,而是常见二进制浮点模型的必然结果。金额、库存和精确计数应优先使用整数最小单位或数据库十进制定点类型;测量值和科学计算可以使用浮点数,但比较方式必须体现业务允许的误差。
# 底层机制
常见浮点格式由符号位、指数和有效数字组成。指数决定可表示范围,有效数字决定精度。由于有效数字位数固定,数值绝对值越大,相邻两个可表示值之间的间隔通常越大。一次运算的真实结果若落在两个可表示值之间,就必须按照舍入模式选择其中一个,因此误差
