3

浮動小数点が不正確なため、お金のクラスを使用する必要があるといつも聞いています。ただし、浮動小数点の不正確さが実際に間違った結果につながる例を見つけるのは驚くほど困難です。

私が選んだプログラミング言語は Python です。結果が予想と異なるかどうかをテストするには、次を使用します。

expected = '1.23'
result = '{:0.2f}'.format(result)
assert expected == result

したがって、以下は浮動小数点の不正確さの良い例ですが、ほとんどのユースケースで有理数クラス (Python の分数など) を使用するマネー クラスが必要な例ではありません。

a = 10.0
b = 1.2
assert a + b - a == b

私が思いつくことができる最高のものは

result = (a + b - a) * 10**14 - b * 10**14
expected = 0

しかし、お金に関連する何かを掛けることは、10**14本当にでっち上げのようです。

今、お金のクラスの必要性を示す現実的な例があるのか​​ 、それとも単に2桁に丸めるだけですべてが「キャプチャ」されているのか疑問に思います.

4

1 に答える 1