2

値を持つセルを10:40:00スプレッドシート関数の結果と比較するときに問題が発生しますTIME(10,40,0)

一連の比較では、8:40to10:39:59と fromの値は正しく比較10:40:01されますが、比較では誤って返されることが示されています。13:40:0010:40:00FALSE

何か不足していますか、それともバグですか?

4

1 に答える 1

1

スプレッドシートをいじってみたところ、その理由がわかりました。これはバグ (または少なくとも時刻リテラルの読み取りの不一致) に違いありません。次のグラフを見てください。リテラルとして入力された時間、これから解析された値、および から解析された値を示しています=TIME()

TIME(...) のリテラルの値
08:40:00 0.3611111111111110000000 0.361111111111110000000
09:40:00 0.4027777777777780000000 0.402777777777780000000
10:30:00 0.437500000000000000000 0.4375000000000000000000
10:39:00 0.443750000000000000000 0.4437500000000000000000
10:39:59 0.4444328703703700000000 0.4444328703703700000000
10:40:00 0.4444444444444440000000 0.444444444444450000000
10:40:01 0.4444560185185190000000 0.4444560185185190000000
10:41:00 0.4451388888888890000000 0.445138888888890000000
10:50:00 0.4513888888888890000000 0.451388888888890000000
11:40:00 0.4861111111111110000000 0.4861111111111110000000
12:40:00 0.5277777777777780000000 0.527777777777780000000
13:40:00 0.5694444444444440000000 0.569444444444440000000

精度は常に小数点以下 15 桁ですが、何らかの理由で 10:40:00 の値は、リテラルから解析されるときに一方の方向に丸められ、から計算されるときに他方の方向に丸められることに注意して=TIME()ください。

興味深いことに、10:40:00 は実際には小数点以下の繰り返し=TIME(10,40,0)であり、切り捨てられる必要があるため、から計算された値は正しくないようです。方式

いずれにせよ、上記を理解すれば、1e-15 のイプシロンを使用して 2 つの値を比較できます (これはたまたま解像度の 1 ナノ秒よりも小さい 1 単位です。1 ナノ秒は 1.15741e-14 です)。したがって、次の比較を使用すると機能します。

=abs(A7-time(10,40,0))<1E-15
于 2015-05-14T01:48:22.567 に答える