首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gmpy2 mpfr值被限制为301,033位数,其中301,032位数字是正确的。

gmpy2 mpfr值被限制为301,033位数,其中301,032位数字是正确的。
EN

Stack Overflow用户
提问于 2019-09-26 20:31:51
回答 1查看 398关注 0票数 3

我正在编写一个Python3 (64位)程序,使用64位Windows 10上的gmpy2模块计算pi到至少一百万位数字,我使用的是Chudnovsky算法。该系列算法是天才的,易于理解,易于实现。我遇到的问题是用gmpy2表示非常大的精确实数。

我把这个问题归结为一个非常简单的测试。

  1. 检查gmpy2系统限制。它们看起来很棒。
  2. 根据需要设置了百万数字π的精确上下文。
  3. 为一个字符串变量分配百万数字pi。
  4. 为一个mpfr变量分配一个mpfr变量--使用mpfr(‘百万位数字pi’)
  5. 打印字符串变量,它有100万个mpfr--它有一个略多于30万位的mpfr。

G 213

当我将mpfr转换为string和print时,我得到了类似的结果。

这里发生了什么,我如何从gmpy2中抽取一百万位数字的精度?

代码语言:javascript
复制
    import gmpy2                # Get the gmpy2 library

    print('max_precision =', gmpy2.get_max_precision())
    print('emin_min =', gmpy2.get_emin_min())
    print('emax_max =', gmpy2.get_emax_max())

    gmpy2.get_context().precision = 1000000 + 3   # Set the precision context.
    print(gmpy2.get_context())

    million_string = 'million digits of pi. I didn't paste it here but you can get it from Eve Andersson's website here, http://www.eveandersson.com/pi/digits/1000000, you'll need to strip out the newlines'

    print('string =', million_string)

    million_pi = gmpy2.mpfr(million_string)

    print('\n\nHere comes the mpfr...\n\n')
    print(million_pi)

在我的输出中,我得到了输出的最大值,mins,上下文,百万位pi字符串,以及大约300,000位π的数字(给予或接受)。我很想向您展示输出,但是系统指责我的格式很好的输出是代码,并且不允许我这样做。我想不出绕过它的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-28 22:24:15

精度是以位而不是十进制数字指定的。每小数位都需要log(10)/log(2)位。1,000,003位将产生1000003*log(2)/log(10)或大约301,030.9位精确的十进制数字。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58124365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档