繁体   English   中英

在python 3中格式化非常大的数字

[英]formatting very large numbers in python 3

我在 python 中执行计算,结果非常大。 其中最小的是 2^10^6,这个数字非常长,所以我尝试使用 format() 将其转换为科学记数法。 我不断收到一条错误消息,指出该数字太大而无法转换为浮点数。

这是我不断收到的错误:

 print(format(2**10**6, "E"))

OverflowError: int too large to convert to float

我想以简洁易读的方式打印2^10^6的结果

您计算了 2 的 10 次方,然后是 6 次方。 如果您的目标是“2 次 10 到第 6 个”,那么2*10**6就是您想要的。 在 python 中,也可以用2E6表示,其中E表示“10 次方”。 当您考虑自然对数和欧拉数e时,这会令人困惑。

如果您想将十进制转为二进制浮点问题,您还可以使用decimal.Decimal包。 在python中,以十进制表示的浮点数四舍五入到最接近的二进制浮点数。 如果你真的想要这个巨大的数字, Decimal可以处理它。

>>> Decimal("2E6")
Decimal('2E+6')
>>> Decimal("2")*10**6
Decimal('2000000')
>>> Decimal("2")**10**6
Decimal('9.900656229295898250697923616E+301029')

对于打印,请使用“g”格式

>>> d = Decimal('2')**10**6
>>> format(d,'g')
'9.900656229295898250697923616e+301029'
>>> format(d,'.6g')
'9.90066e+301029'

>>> "{:g}".format(d)
'9.900656229295898250697923616e+301029'
>>> "{:.6g}".format(d)
'9.90066e+301029'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM