代码之家  ›  专栏  ›  技术社区  ›  barteloma

Excel时间间隔返回相同范围内的不同值

  •  4
  • barteloma  · 技术社区  · 9 年前

    我使用excel计算时间间隔的总分钟数。

    我的计算公式如下: =INT((M3-L3)*1440)

    Time1                   Time2                Minutes
    5.1.2016  21:00:00      5.1.2016  22:00:00   59
    5.1.2016  22:00:00      5.1.2016  23:00:00   60
    

    第一个结果是59,第二个结果是60。

    这里有什么问题?

    1 回复  |  直到 9 年前
        1
  •  3
  •   Bobby Orndorff    9 年前

    Excel内部将日期/时间值表示为双精度浮点数。整数部分表示一天。小数部分表示时间。浮点数具有有限的精度(大约15位以10为基数的有效数字)。这意味着某些数字不能精确表示,这会引入小的近似误差,从而导致意外的结果。

    在您的示例中,第一个计算是按照。。。

    =INT((5.1.2016 21:00 - 5.1.2016 22:00)*1440)
    =INT((42491.875-42491.9166666667)*1440)
    =INT(0.041666666664241*1440)
    =INT(59.9999999965975)
    =59
    

    第二次计算如下:。。。

    =INT((5.1.2016 22:00 - 5.1.2016 23:00)*1440)
    =INT((42491.9166666667-42491.9583333333)*1440)
    =INT(0.041666666664241*1440)
    =INT(60.0000000069849)
    =60
    

    这是浮点数学的一个限制。

    在这种特定的情况下,您可以通过将INT(数字)替换为ROUND(数字,0)或MROUND(数字,1)来获得所需的结果