Python中的双精度浮点值?

时间:2011-07-12 11:09:26

标签: python types precision

是否有比float更精确的数据类型?

5 个答案:

答案 0 :(得分:95)

Python的内置float类型具有双精度(在CPython中是C double,在Jython中是Java double。如果您需要更高的精确度,请获取NumPy并使用其numpy.float128

答案 1 :(得分:43)

Decimal datatype

  • 与基于硬件的二进制浮点不同,十进制模块具有用户可更改的精度(默认为28个位置),可以根据给定问题的需要进行调整。

如果您遇到效果问题,请查看GMPY

答案 2 :(得分:12)

可能你需要十进制

>>> from decimal import Decimal    
>>> Decimal(2.675)
Decimal('2.67499999999999982236431605997495353221893310546875')

Floating Point Arithmetic

答案 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)