Microsoft Lab
全部软件
Excel公式错误(Formula Errors)约 4 分钟

Floating Point Errors 浮点数误差

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


什么是浮点数误差

Excel 会存储和计算浮点数,有时候公式的结果只是一个非常接近的近似值,不是完全精确的数字。


怎么发现浮点数误差

  1. 一般情况下直接看单元格,公式结果看起来完全正常
  2. 把该单元格的小数位数显示到 16 位(增加小数位数按钮一直点),会发现某些结果其实带着一长串看不出规律的极小尾数,代表这只是一个近似值
📷 画面提示

同一个单元格分别显示默认位数和展开到 16 位小数的对比,展开后露出误差尾数的样子


浮点数误差可能造成的问题

把带有浮点数误差的单元格拿去跟另一个数字做等于比较(例如判断 C8 是否等于某个整数),因为 C8 实际上并不是「完全精确」的那个数字,比较结果可能是 FALSE,即使两者看起来应该相等。


两种解决方案怎么选

方案做法影响范围
ROUND 函数修正比较前先用 ROUND 去掉误差尾数只影响用到 ROUND 的那条公式
Precision as DisplayedFile›Options›Advanced勾选「精度与显示位数一致」影响整份文件,要谨慎

解决方案一:用 ROUND 函数修正

在比较之前先用 ROUND 函数把数字四舍五入到指定小数位,去掉误差造成的极小尾数,让比较结果符合预期。


解决方案二:调整显示精度(Precision as Displayed)

File 标签 → Options›Advanced,勾选「Set precision as displayed」(精度与显示位数一致)这个选项,可以让 Excel 把数字强制精确到目前显示的小数位数,但这个设置会影响整份文件,改动前要谨慎。


学完你会

常见错误

  • 拿两个「看起来相等」的公式结果直接用 = 判断相等,没考虑到浮点数误差可能导致比较失败
  • 遇到判断结果跟预期不符,第一时间怀疑公式逻辑写错,而不是先检查是不是浮点数误差
  • 随意开启「精度与显示位数一致」这个全局设置,没意识到它会永久改变整份文件里数字的精确度,无法还原

📌 补充说明

浮点数误差在实际使用中很少见,多数情况不需要特别担心,只有在做精确的等于比较时才需要留意。

Sources

Blog / Website:

  1. Floating Point Errors
只记在你的浏览器里,换设备不会同步。