【问题标题】:How to print large numbers in Python? [duplicate]如何在 Python 中打印大量数字? [复制]
【发布时间】:2019-08-11 14:49:43
【问题描述】:

在 Python 中除以 2 个大数时,输出为 1.5640891676957637e+308。如何打印整个号码?

【问题讨论】:

  • 你的意思是每个数字吗?如果是浮点数,则不能,浮点数的精度有限。您可以将数字写为整数并使用整数除法//。但是,如果您通过将浮点数转换为整数来创建数字,则在创建数字时要小心。
  • docs.python.org/3/tutorial/floatingpoint.html 表明浮点数只能达到大约 16 位的精度。从理论上讲,您可以将浮点数转换为字符串,然后使用一些神秘的操作来磨出长除法,但这需要很长时间。例外情况是,如果大数字只有这么多有效数字,并且您可以找到重复的分数。

标签: python


【解决方案1】:

这无法完成,因为这就是 float 类型所具有的所有精度。它会告诉您数字的前 16 位或其他数字和指数,但前 16 位之后的数字从未计算过,因为它们没有空间。

如果您想处理大量数字并基本上具有无限精度,就像使用 Python 的 integers 一样,请尝试使用 the SymPy library

【讨论】:

    【解决方案2】:
    number_str = str(int(1.5640891676957637e+308))
    print(number_str)
    

    打印:

    156408916769576373071379516999674270294758197183972476505692635672561429946607721482839700799900977784426920800145985096418278978450607600874550703086464871105809270941181641564392002031609107640705147719606017681794554578537463358952125037388161745430586972528713238507284919924435316681000630776819257180160
    

    【讨论】:

    • 这只是将舍入为 1.5640891676957637e+308 的众多整数之一...
    【解决方案3】:

    您可以考虑标准库https://docs.python.org/3/library/decimal.html中的十进制数据类型@“十进制模块提供对快速正确舍入的十进制浮点运算的支持。它提供了优于浮点数据类型的几个优点...十进制数可以精确表示"

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 2017-04-10
      • 2017-07-04
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      相关资源
      最近更新 更多