2017-02-22 9 views

答えて

1

これは、バイナリ浮動小数点が10進表現に非常によく変換されないためです。仮定64ビットIEEE754浮動小数点:

0.1に最も近い浮動小数点数は10.1に最も近い浮動小数点数が 10.0999999999999996447286321199499070644378662109375ある0.1000000000000000055511151231257827021181583404541015625

ある

あなたは小数部分が実質的に異なっていることが確認でき

、そう正確な比較は失敗に結びつく。

あなたの特定の使用事例に非常に依存しているので、ここで解決策を提案するのは難しいです。 (本能は、あなたが1e-13の加法公差を比較できることを私に示唆している)。

+0

この補足として、この不等式を避けるために小数点以下1桁に丸めることができます。「0.1 %% 1 == round(10.1 %% 1、1)」はTRUEです。 –

+2

'all.equal'もこれらを等しいものとして表示します。 –

関連する問題