如何在 Python 中打印大量数字? [复制]
Posted
技术标签:
【中文标题】如何在 Python 中打印大量数字? [复制]【英文标题】:How to print large numbers in Python? [duplicate] 【发布时间】:2019-08-11 14:49:43 【问题描述】:在 Python 中除以 2 个大数时,输出为 1.5640891676957637e+308。如何打印整个号码?
【问题讨论】:
你的意思是每个数字吗?如果是浮点数,则不能,浮点数的精度有限。您可以将数字写为整数并使用整数除法//
。但是,如果您通过将浮点数转换为整数来创建数字,则在创建数字时要小心。
docs.python.org/3/tutorial/floatingpoint.html 表明浮点数只能达到大约 16 位的精度。从理论上讲,您可以将浮点数转换为字符串,然后使用一些神秘的操作来磨出长除法,但这需要很长时间。例外情况是,如果大数字只有这么多有效数字,并且您可以找到重复的分数。
【参考方案1】:
这无法完成,因为这就是 float
类型所具有的所有精度。它会告诉您数字的前 16 位或其他数字和指数,但前 16 位之后的数字从未计算过,因为它们没有空间。
如果您想处理大量数字并基本上具有无限精度,就像使用 Python 的 int
egers 一样,请尝试使用 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中的十进制数据类型@“十进制模块提供对快速正确舍入的十进制浮点运算的支持。它提供了优于浮点数据类型的几个优点...十进制数可以精确表示"
【讨论】:
以上是关于如何在 Python 中打印大量数字? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
MS Excel 2007:如何在每次打印输出后增加单元格中的数字
如何在 Swift 4 中的浮点数后打印 5 位数字,有没有最短的方法? [复制]