You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Google Sheet中=floor((189-0.9*201)/(0.9))结果为8?正确值为9

Google Sheet中Floor公式计算误差问题分析与解决

1. 问题产生的原因

这是浮点数精度误差导致的典型问题。十进制中的0.9无法被二进制浮点数精确表示,计算机在存储和计算这类小数时会产生微小的舍入偏差。

具体到你的公式:

  • 理论计算逻辑:0.9*201=180.9,189-180.9=8.1,8.1/0.9=9,FLOOR后结果应为9。
  • 实际计算偏差:0.9*201的结果并非精确的180.9,而是类似180.89999999999998的近似值;后续189-180.89999999999998得到8.10000000000002,再除以0.9后,结果会变成8.999999999999998(而非精确的9)。
  • FLOOR函数会向下取整,因此8.999999999999998会被截断为8。

2. Google Sheet中避免此类问题的方法

针对浮点数精度误差,可通过以下几种方式解决:

  • 转换为整数运算:将所有涉及的小数放大为整数,彻底规避浮点数偏差。例如把公式改写为:

    =FLOOR((1890 - 9*201)/9)
    

    所有运算均为整数,结果精确为9。

  • 先对中间结果取精确小数位:使用ROUND函数将计算结果修正到足够多的小数位(比如10位),消除微小的偏差后再执行FLOOR:

    =FLOOR(ROUND((189-0.9*201)/0.9, 10))
    

    这种方法适用于无法转换为整数的场景。

  • 使用精确小数处理逻辑:通过ROUND配合合适的小数位,确保计算值接近理论精确值后再进行取整操作,抵消浮点数带来的偏差。

内容的提问来源于stack exchange,提问作者TSR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:02:38