Python本机任意精度

Python本机任意精度,python,arbitrary-precision,Python,Arbitrary Precision,有没有办法编译Python的解释器,使它可以使用本机(c)任意精度库,这样Python就可以像使用普通数字一样使用任意精度,而不必使用decimal类 例如 如果您不满意内置的十进制,可以尝试几个实现更高精度浮点数的库。然而,他们中的大多数人并不完全是“本地人”——你可以澄清你的意思以及你为什么需要它 -它提供了高精度浮点数的纯Python实现,但如果系统上支持它,它可以自动切换到GNU MP,它有一系列广泛的功能 -它为GNU MP库提供了一个包装器 -它为GNU MPFR库提供了一个包装器(

有没有办法编译Python的解释器,使它可以使用本机(c)任意精度库,这样Python就可以像使用普通数字一样使用任意精度,而不必使用decimal类

例如


如果您不满意内置的
十进制
,可以尝试几个实现更高精度浮点数的库。然而,他们中的大多数人并不完全是“本地人”——你可以澄清你的意思以及你为什么需要它

  • -它提供了高精度浮点数的纯Python实现,但如果系统上支持它,它可以自动切换到GNU MP,它有一系列广泛的功能
  • -它为GNU MP库提供了一个包装器
  • -它为GNU MPFR库提供了一个包装器(它基于GNU MP;包装器看起来不太有前途,因为它使用
    ctypes
  • 如果给定的性能关键部分需要Cython,您可以直接使用Cython和上述任何库(例如GNU MP)。您还可以为您的用例制作一个特别的Cython包装器

  • 即使有可能,你也不应该这样做。在世界上任何其他Python安装上运行时,依赖于此来正确工作(或者说,足够准确——小数的精度也有限)的代码都会中断。代码不仅运行速度慢(有点到相当多),而且产生大致相同的结果。@delnan:说得很好。:)我知道对于库中的任意精度,我有不同的选择,但是问题更多的是我是否可以使用它们,而不把它们当作普通的Python浮点,而是精确的;你为什么要这样做,你希望从中得到什么?我试图找到一种方法,在不使代码复杂化的情况下使用任意精度(这是管理层的目标,他们并不真正理解fp精度)@jamesj:管理不是问题。可维护性是个问题。显式比隐式好。
    >>0.00000001 + 1
    1.00000001