2

将具有值的单元格与10:40:00电子表格函数的结果进行比较时遇到问题TIME(10,40,0)

一系列比较表明 from 8:40to10:39:59和 from 10:40:01to13:40:00比较正确但10:40:00错误返回比较的FALSE值。

我错过了什么还是这是一个错误?

4

1 回答 1

1

我玩过你的电子表格,我想我找到了原因。这一定是一个错误(或者至少是读取时间文字的不一致)。看看下面的图表,它显示了作为文字输入的时间、从中解析的值以及从 解析的值=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
于 2015-05-14T01:48:22.567 回答