Python-如何在科学记数法中不获取指数(例如1.2**1000=1.51791091722457e+79)



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

10715086071862673209484250490600018105614048117053360743750388351051124936122493198378815695858112759467291755314682518714528569231404359845774798574803943456777482423098542107460506237114187795418213530464748358194126739876755591655439460729145711996477686542167660429831652624386837205668069376

但如果对浮点值(即1.2**1000(执行相同操作,则会产生

1.5179100891722457e+79

有没有一种内置的方法来获得这样一个计算的全部值(不是用科学符号表示(?

您看到的行为的原因是,第一个表达式的两个操作数都是整数,而第二个表达式是浮点数,因为其中一个操作数是浮点数。要获得所需的结果,可以将第二个表达式的结果强制转换为int:
>>> int(1.2**1000)
15179100891722457049849556131606991918673074938672571271083893226004713928916992L

您应该能够使用format()

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

给出输出15179100891722457049849556131606991918673074938672571271083893226004713928916992.000000

尝试强制转换为整数。

int(1.2 ** 1000)

如果你想得到小数,尽管你需要做一些额外的工作,这取决于你的目标

您可以使用它打印

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

相关内容