是否有比float更精确的数据类型?
答案 0 :(得分:95)
Python的内置float
类型具有双精度(在CPython中是C double
,在Jython中是Java double
。如果您需要更高的精确度,请获取NumPy并使用其numpy.float128
。
答案 1 :(得分:43)
答案 2 :(得分:12)
可能你需要十进制
>>> from decimal import Decimal
>>> Decimal(2.675)
Decimal('2.67499999999999982236431605997495353221893310546875')
答案 3 :(得分:12)
对于某些应用程序,您可以使用Fraction
而不是浮点数。
>>> from fractions import Fraction
>>> Fraction(1, 3**54)
Fraction(1, 58149737003040059690390169)
(对于其他应用程序,有decimal
,如其他回复所示。)
答案 4 :(得分:2)
这是我的解决方案。我首先使用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)