Python 如何以可读的方式指定大整数文本?
我想指定一个大整数序列(有许多零),如: 我的直觉是使用科学符号。但在python中,它是一个浮点而不是整数。在python中,有没有一种简单的方法可以在不写入所有零的情况下编写这些整数文本,因为确保零的数量正确是一场噩梦Python 如何以可读的方式指定大整数文本?,python,Python,我想指定一个大整数序列(有许多零),如: 我的直觉是使用科学符号。但在python中,它是一个浮点而不是整数。在python中,有没有一种简单的方法可以在不写入所有零的情况下编写这些整数文本,因为确保零的数量正确是一场噩梦 我相信我可以使用int将浮点数转换回整数,但我想知道是否有更好的方法?使用*和**,它并不漂亮,但会给出正确的结果 print(2e10) 20000000000.0 print(2*10**10) 20000000000 您还可以生成一个完整的列表,如下所示: resu
我相信我可以使用
int
将浮点数转换回整数,但我想知道是否有更好的方法?使用*
和**
,它并不漂亮,但会给出正确的结果
print(2e10)
20000000000.0
print(2*10**10)
20000000000
您还可以生成一个完整的列表,如下所示:
result = []
for i in range(5):
result.append(1*10**i)
>>> result
[1, 10, 100, 1000, 10000]
您可以设置一些后缀
K=1000
M=K*K
G=K*M
T=K*G
P=K*T
E=K*P
print 12*P
或者使用较长的名称(kilo等)。您可以将逗号分隔符用作字符串,然后转换为整数
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
def bigint(s):
return locale.atoi(s)
print bigint('1,000,000,000,000')
您可以这样做,这样可以避免浮点到整数的转换问题,在我看来,这是相当可读的:
a = map(int, ['1'+'0'*13, '1'+'0'*14, '1'+'0'*19, '1'+'0'*23])
for value in a:
print(format(value, ','))
输出:
100000000000
100,000,000,000,000
10,000,000,000,000,000,000
100,000,000,000,000,000,000,000
供未来观众观看
因为将包括python 3.6
因此,您可以使用
a=1\u 000\u 000\u 000
来提高代码的可读性。a=[10**13,10**14,10**19]对您有用吗?在Python()中没有简洁的方法来指定大的十进制整数文本。如果幸运的话,CPython的窥视孔优化程序将在编译时用100000000000
替换10**13
。注意浮点到整数的转换(挑剔:Python没有“强制转换”)。它不会总是给你你期望的价值。例如,int(1e23)
给出9999999999999 1611392
。
a = map(int, ['1'+'0'*13, '1'+'0'*14, '1'+'0'*19, '1'+'0'*23])
for value in a:
print(format(value, ','))