2017-06-21 1 views
0

0.000028などの結果で非常に少量になる複雑な数学演算を持つアプリがあります。今、私はJavaScriptのような計算を(29631/1073741824)私は結果を0.000027596019208431244としていますが、データ型がfloatのpythonと同じ計算では0.0になります。どのように私はPythonのPythonで精度をn個まで増やすと小数点結果が得られます

+2

'decimal'使用:https://docs.python.org/3.6/library/decimal.html、任意の精度を設定することができます。 – jOOsko

答えて

5

を問題は、小数点の欠如ではないが、 Python 2の整数除算で整数結果が生成されます。つまり、29631/1073741824は、あなたが期待しているフロートではなく、0を返します。

>>> 29631.0/1073741824 
2.7596019208431244e-05 

このchanged in Python 3、除算演算子が予想されることを行います。これを回避するには、次のいずれかのオペランドにフロートを使用することができます。あなたはturn on the new behavior in Python 2from __future__インポートを使用することができます。

>>> from __future__ import division 
>>> 29631/1073741824 
2.7596019208431244e-05 
-1

に結果における小数点以下の桁数を増やすことができますが、Pythonの3.xを使用している場合、あなたはこの試してみてください:

print(str(float(29631)/1073741824)) 
+1

Python 3では、 '29631/1073741824'は期待される(浮動)結果を計算するので、必要ではないはずです。 – user4815162342

関連する問題