是否有比 float 更精确的数据类型?
Python 的内置 float类型具有双精度(CPython 中是 C double,Jython 中是 Java double)。如果需要更高的精度,可以得到 笨蛋并使用它的 numpy.float128。
float
double
numpy.float128
十进制数据类型
If you are pressed by performance issuses, have a look at GMPY
也许你需要十进制
>>> from decimal import Decimal >>> Decimal(2.675) Decimal('2.67499999999999982236431605997495353221893310546875')
浮点运算
对于某些应用程序,您可以使用 Fraction代替浮点数。
Fraction
>>> from fractions import Fraction >>> Fraction(1, 3**54) Fraction(1, 58149737003040059690390169)
(对于其他应用程序,也有 decimal,正如其他回复所建议的那样。)
decimal
这是我的解决办法。我首先创建了一个随机数,它的格式是双精度的字符串,然后将它们转换回 float。您可以通过将’.2 f’改为’.3 f’等来调整精度。.
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)