Excel 时间之间 returns 相同范围内的不同值
Excel between times returns different values in same range
我正在使用 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。
这里有什么问题?
Excel 在内部将 date/time 值表示为双精度浮点数。整数部分表示日期。小数部分代表时间。浮点数具有有限的精度(大约 15 个有效的 base-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(number) 替换为 ROUND(number,0) 或 MROUND(number,1)
我正在使用 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。
这里有什么问题?
Excel 在内部将 date/time 值表示为双精度浮点数。整数部分表示日期。小数部分代表时间。浮点数具有有限的精度(大约 15 个有效的 base-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(number) 替换为 ROUND(number,0) 或 MROUND(number,1)