Home > Mobile >  why is my int() conversion looking so weird?
why is my int() conversion looking so weird?

Time:02-08

I'm trying to take a number and divide it by 100 to get 1%, but when i tried to convert it to integer using the int(), it's giving me some weird output. i have no clue what i'm doing wrong here.

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

print(totalsupply)
print(onepercent)

the output is coming out as such:

1000000000000000000000000000000
9999999999999999583119736832
[Finished in 68ms]

I was expecting the onepercent to be this: 10000000000000000000000000000.

CodePudding user response:

According to this post, python tries to convert the number to a float on a division. However, floats are limited to 1.7976931348623157e 308. A workaround is to use the // operator which returns an int from the division, so for your example:

totalsupply = 1000000000000000000000000000000
onepercent = totalsupply//100

print(totalsupply)
print(onepercent)

CodePudding user response:

Python has a built-in integer type that has infinite precision. That's what you are creating with your first line

 totalsupply = 1000000000000000000000000000000

However, python has two division operators. The standard division "slash" operator ("/") is floating-point operation, whereas the double-slash gives integers.

Hence totalsupply/100 is a floating point number, which has finite precision, and so the closest it can do is 9999999999999999583119736832.

However, if instead you do

onepercent = totalsupply//100
print(onepercent)

you get the expected 100000000000000000000000000000.

  •  Tags:  
  • Related