如何以可读的方式指定大整数文字?

时间:2015-07-10 13:19:47

标签: python

我想指定一个大整数序列(有很多零),如:

a = [1e13, 1e14, 1e19, ...]

我的直觉是使用科学记数法。但是在python中,它是一个浮点而不是整数。有没有一种简单的方法在python中编写这些整数文字而不写入所有的零,因为确保零的数量是正确的噩梦。

我相信我可以使用int将浮点数转换回整数,但只是想知道是否有更好的方法?

5 个答案:

答案 0 :(得分:4)

使用***,它并不漂亮但会为您提供正确的结果。

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]

答案 1 :(得分:4)

对于未来的观众。

因为将包含python 3.6 PEP 515

因此,为了更好的代码的可读性,您可以a = 1_000_000_000_000

答案 2 :(得分:1)

您可以将逗号分隔符用作数千个字符串,然后转换为int。

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')

答案 3 :(得分:0)

您可以设置一些后缀

K=1000
M=K*K
G=K*M
T=K*G
P=K*T
E=K*P
print 12*P

或使用较长的名字(公斤等)。

答案 4 :(得分:0)

你可以这样做,这可以避免浮点转换到int转换问题,并且在我看来是可读的:

a = map(int, ['1'+'0'*13, '1'+'0'*14, '1'+'0'*19, '1'+'0'*23])
for value in a:
    print(format(value, ','))

输出:

10,000,000,000,000
100,000,000,000,000
10,000,000,000,000,000,000
100,000,000,000,000,000,000,000