Python中的双精度浮点值?

有数据types精度比浮动更好吗?

十进制数据types

  • 与基于硬件的二进制浮点不同,十进制模块具有用户可改变的精度(默认为28位),对于给定的问题,该模块可以像需要那样大。

如果您受到性能问题的压力,请查看GMPY

Python内置的floattypes具有双精度(这是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)