floating point in python gives a wrong answer
Question:
I calculated the following:
>>> float(10.0-9.2)
0.800000000000000*7*
even doing 10.0-9.2 gave the above result. Why is the extra 7 coming in the result?
I’m on python 3.2.
Answers:
Floating point arithmetic has built-in problems as it’s based on a binary approximation of numbers.
There is a good explanation of this in the Python docs.
You can check out the decimal
module if you need more exact answers.
This is typical of binary floating-point arithmetic on all platforms. If your application is not tolerant of rounding errors within this margin of error, you can use Decimal objects instead.
You can use round()
for example:
print(round(10 - 9.2, 2))
I calculated the following:
>>> float(10.0-9.2)
0.800000000000000*7*
even doing 10.0-9.2 gave the above result. Why is the extra 7 coming in the result?
I’m on python 3.2.
Floating point arithmetic has built-in problems as it’s based on a binary approximation of numbers.
There is a good explanation of this in the Python docs.
You can check out the decimal
module if you need more exact answers.
This is typical of binary floating-point arithmetic on all platforms. If your application is not tolerant of rounding errors within this margin of error, you can use Decimal objects instead.
You can use round()
for example:
print(round(10 - 9.2, 2))