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
例如,当计算以下 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