Python-如何不获取科学计数法的指数例如1.2 ** 1000 = 1.5179100891722457e + 79

问题描述

例如,当计算以下2**1000时,您会得到整个值

10715086071862673209484250490600018105614048117055336074437503883703510511249361221983198378815695858127594672917553146825187145285692314043598457757469857480393456777482423098542107460506506237237187179541821530430449849835819412673987675591655439460770629145716964776864694676688768

但是如果您对浮点数执行相同的操作,即1.2**1000会给出

1.5179100891722457e + 79

是否有内置的方法来获得这种计算的全部价值(不是科学计数法)?

解决方法

您应该可以使用format()

    a = 1.2**1000
    print(format(a,'f'))

给出输出15179100891722457049849556131606991918673074938672571271083893226004713928916992.000000

,

尝试强制转换为整数。

int(1.2 ** 1000)

如果您想获取小数,尽管您需要根据自己的目标进行一些其他工作

,

出现这种现象的原因是,第一个表达式的结果是整数,因为它的两个操作数都是整数,而第二个表达式是浮点数,因为其中一个操作数是浮点数。要获得所需的结果,可以将第二个表达式的结果强制转换为int:

>>> int(1.2**1000)
15179100891722457049849556131606991918673074938672571271083893226004713928916992L
,

您可以使用它来打印它

print("{:.3E}".format(1234567890987654321))

这将输出:

1.235E+18

您也可以使用十进制值。它将采用类似的格式。

print("{0:.3E}".format(1234567890987654321.98765432))

1.235E+18

如果要打印完整号码,则可以执行以下操作:

y = 1234567890987654321.98765432
print(f"{y:.22}")

它将输出:

1234567890987654400.0