Python中的双精度浮点值?

kra*_*mir 75 python precision types

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

Fre*_*Foo 103

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

  • 显然,`numpy.float128`在64位系统上通常具有64位精度.`numpy.float128(1)+ numpy.float128(2** - 64) - numpy.float128(1)`返回`0.0`.请参见http://stackoverflow.com/a/29821557/420755 (13认同)
  • @FuscaSoftware 这在其他语言中也是一个问题。IEEE 双精度数无法准确表示 0.3。这听起来像是格式化工件。 (5认同)

Jac*_*cob 47

十进制数据类型

  • 与基于硬件的二进制浮点不同,十进制模块具有用户可更改的精度(默认为28个位置),其可以与给定问题所需的一样大.

如果您受到绩效奖励的压力,请查看GMPY


Gar*_*ees 14

对于某些应用程序,您可以使用Fraction而不是浮点数.

>>> from fractions import Fraction
>>> Fraction(1, 3**54)
Fraction(1, 58149737003040059690390169)
Run Code Online (Sandbox Code Playgroud)

(对于其他应用程序,decimal正如其他响应所建议的那样.)

  • 如何在小数和分数之间进行选择?分数似乎更好,因为它可以表示连续分数,我想 Decimal 不能? (2认同)
  • @Janus:考虑您的要求,然后选择更适合他们的。当您想要使用具有固定(但可配置)精度的近似数字时,请使用“十进制”。当您想要使用精确的比率并准备好满足无限的存储要求时,请使用“分数”。 (2认同)

jer*_*boa 13

可能你需要十进制

>>> from decimal import Decimal    
>>> Decimal(2.675)
Decimal('2.67499999999999982236431605997495353221893310546875')
Run Code Online (Sandbox Code Playgroud)

浮点运算