Python is automatically rounding large numbers with decimals

I need to perform the following calculation in Python:

(10^16) + (9 * 54945054708534.5)

The output it prints is:


but this is incorrect as the solution should end in 0.5. I have tried setting my variables to floats but this does not help, I also make sure that I print the float to 1 s.f.

Below is the section of code where it is being calculated as well as printed (i is 8 in this case):

area = float(((10.0 ** i)**2.0)/float(2.0) + 9.0*area)
print(f'{i} {area:.1f}')

Since this is in a for-loop I need the area to be correct for subsequent iterations but it always messes up at i = 8 where the value of area goes from 10^15 to 10^16. I have tried on Python 3.6.10 and 3.8.8, both produce the same result.

Does Python auto round numbers after a while? How can I represent huge numbers in Python so that my calculations and prints are correct?

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum