将具有值的单元格与10:40:00
电子表格函数的结果进行比较时遇到问题TIME(10,40,0)
一系列比较表明 from 8:40
to10:39:59
和 from 10:40:01
to13:40:00
比较正确但10:40:00
错误返回比较的FALSE
值。
我错过了什么还是这是一个错误?
将具有值的单元格与10:40:00
电子表格函数的结果进行比较时遇到问题TIME(10,40,0)
一系列比较表明 from 8:40
to10:39:59
和 from 10:40:01
to13:40:00
比较正确但10:40:00
错误返回比较的FALSE
值。
我错过了什么还是这是一个错误?
我玩过你的电子表格,我想我找到了原因。这一定是一个错误(或者至少是读取时间文字的不一致)。看看下面的图表,它显示了作为文字输入的时间、从中解析的值以及从 解析的值=TIME()
:
来自 TIME(...) 的文字值 08:40:00 0.3611111111111110000000 0.3611111111111110000000 09:40:00 0.4027777777777780000000 0.4027777777777780000000 10:30:00 0.4375000000000000000000 0.4375000000000000000000 10:39:00 0.4437500000000000000000 0.4437500000000000000000 10:39:59 0.4444328703703700000000 0.4444328703703700000000 10:40:00 0.4444444444444440000000 0.4444444444444450000000 10:40:01 0.4444560185185190000000 0.4444560185185190000000 10:41:00 0.4451388888888890000000 0.4451388888888890000000 10:50:00 0.4513888888888890000000 0.4513888888888890000000 11:40:00 0.4861111111111110000000 0.4861111111111110000000 12:40:00 0.5277777777777780000000 0.5277777777777780000000 13:40:00 0.5694444444444440000000 0.5694444444444440000000
请注意,精度始终为小数点后 15 位,但由于某种原因,从文字解析时 10:40:00 的值在一个方向四舍五入,从=TIME()
.
有趣的是,计算出的值=TIME(10,40,0)
似乎是不正确的,因为10:40:00 确实是重复的小数,应该向下取整。
无论如何,了解上述内容后,我们可以使用 1e-15 的 epsilon(恰好比分辨率的 1 纳秒小一个数量级单位 - 1 纳秒为 1.15741e-14)来比较这两个值。因此,如果您使用以下比较,它会起作用:
=abs(A7-time(10,40,0))<1E-15