为什么我的int()转换看起来如此奇怪



我试图取一个数字并将其除以100得到1%,但当我试图使用int((将其转换为整数时,它给了我一些奇怪的输出。我不知道我在这里做错了什么。

totalsupply = 1000000000000000000000000000000
onepercent = int((totalsupply/100))
print(totalsupply)
print(onepercent)

输出如下:

1000000000000000000000000000000
9999999999999999583119736832
[Finished in 68ms]

我原以为百分之一是这样的:10000000000000000000000000000。

根据这篇文章,python试图将数字转换为除法上的浮点值。但是,浮点值仅限于1.7976931348623157e+308。一个变通方法是使用//运算符,它从除法中返回一个int,因此对于您的示例:

totalsupply = 1000000000000000000000000000000
onepercent = totalsupply//100
print(totalsupply)
print(onepercent)

Python有一个内置的整数类型,具有无限精度。这就是你用第一行创建的

totalsupply = 1000000000000000000000000000000

然而,python有两个除法运算符。标准划分";斜线";运算符("/"(是浮点运算,而双斜杠给出整数。

因此,totalsupply/100是一个浮点数,其精度有限,因此它能做的最接近的是9999999999999999583119736832

然而,如果你做

onepercent = totalsupply//100
print(onepercent)

你得到了预期的CCD_ 5。

相关内容

最新更新