Python原生任意精度

3 投票
1 回答
733 浏览
提问于 2025-04-16 21:55

有没有办法把Python的解释器编译成可以使用本地的(C语言写的)任意精度库,这样Python就能像使用普通数字一样使用任意精度,而不需要使用decimal类呢?

举个例子:

>>0.00000001 + 1
1.00000001

1 个回答

3

如果你对内置的 decimal 类型不满意,可以试试一些实现了更高精度浮点数的库。不过大多数库并不是完全“原生”的——你可能需要解释一下你所说的“原生”是什么意思,以及你为什么需要它。

  1. mpmath - 这是一个用纯Python实现的高精度浮点数库,如果系统支持的话,它可以自动切换到GNU MP,功能非常丰富。
  2. gmpy - 这个库是GNU MP库的一个封装。
  3. bigfloat - 这是GNU MPFR库的一个封装(这个库是基于GNU MP的;不过这个封装看起来不太靠谱,因为它使用了 ctypes)。
  4. 如果你需要在某些性能要求很高的地方使用这些库,可以用Cython直接调用上面提到的任何库(比如GNU MP)。你也可以为你的特定需求制作一个临时的Cython封装。

撰写回答