Python中的双精度浮点值?
有数据types精度比浮动更好吗?
十进制数据types
- 与基于硬件的二进制浮点不同,十进制模块具有用户可改变的精度(默认为28位),对于给定的问题,该模块可以像需要那样大。
如果您受到性能问题的压力,请查看GMPY
Python内置的float
types具有双精度(这是CPython中的C double
,Jython中的Java double
)。 如果您需要更高的精度,请获取NumPy并使用它的numpy.float128
。
对于某些应用程序,您可以使用Fraction
而不是浮点数。
>>> from fractions import Fraction >>> Fraction(1, 3**54) Fraction(1, 58149737003040059690390169)
(对于其他应用程序,其他应用程序中会显示decimal
,如其他响应所示)。
可能是你需要十进制
>>> from decimal import Decimal >>> Decimal(2.675) Decimal('2.67499999999999982236431605997495353221893310546875')
浮点运算
这是我的解决scheme。 我首先用random.uniform创build随机数字,将它们格式化为双精度string,然后将它们转换回浮点数。 您可以通过将“.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)