是否有比浮点精度更好的数据类型?
Answers:
float
-s是双精度”
Python的内置float
类型具有双精度(double
在CPython中为C,在Jython中为Java double
)。如果需要更高的精度,请获取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创建随机数,将其格式化为具有双精度的字符串,然后将其转换回浮点数。您可以通过将“ .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)