floatよりも精度の高いデータ型はありますか?
回答:
パフォーマンスの問題に悩まされている場合は、GMPYをご覧ください
float
-sは倍精度です」
Pythonの組み込みfloat
型は倍精度です(double
CPythonではC double
、JythonではJavaです)。より高い精度が必要な場合は、NumPyを入手してそのを使用してくださいnumpy.float128
。
numpy.float128
64ビットシステムでは64ビット精度であることがよくあります。numpy.float128(1) + numpy.float128(2**-64) - numpy.float128(1)
を返します0.0
。stackoverflow.com/a/29821557/420755
Decimal
固定された(ただし構成可能な)精度を持つ概数で作業する場合に使用します。Fraction
正確な比率で作業したい場合に使用し、無制限のストレージ要件に耐える準備ができています。
これが私の解決策です。まず、random.uniformを使用して乱数を作成し、倍精度で文字列にフォーマットしてから、floatに変換し直します。'.2f'を '.3f'などに変更することで精度を調整できます。
import random
from decimal import Decimal
GndSpeedHigh = float(format(Decimal(random.uniform(5, 25)), '.2f'))
GndSpeedLow = float(format(Decimal(random.uniform(2, GndSpeedHigh)), '.2f'))
GndSpeedMean = float(Decimal(format(GndSpeedHigh + GndSpeedLow) / 2, '.2f')))
print(GndSpeedMean)