2017-08-16 20 views
-1

私は間違った結果

4099999.9999999995 

は、あなたがどのようにこの計算を修正する方法を教えてもらえます。この結果を得た

a = 4.1 
b = 1000000 
c = 0 
result = (a * b) + c 
print(result) 

のpython3で以下のコードを実行すると、 ?

PS。これはPythonの既知の問題ですか?

+2

[浮動小数点数学は壊れていますか?](https://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Phylogenesis

+0

@Phylogenesis私はとてもありがとうございます!計算を修正する方法を教えてください。 –

+1

はい。これはPythonの既知の問題です。また、固定長の浮動小数点数をサポートするすべてのプログラミング言語の問題。また、固定長の浮動小数点数をサポートするすべてのハードウェアを使用します。人生の悲しい事実だとしましょう...有限のスペースを持っている 実数は無限大ですが、有限数の数字をエンコードすることができます。 - 一方、16桁目の誤差は、地球 - 太陽距離を測定しているときの誤差が10μm程度に相当します。コンピュータを使用しているときにさらに精度が必要な場合は、それを持つことができます。しかしそれは珍しいことです。 – gboffi

答えて