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

Python - How to not get exponent in scientific notation (e.g 1.2**1000 = 1.5179100891722457e+79)

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

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

但是如果你对浮点数做同样的事情,即 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