Python Forum

Full Version: multiplying integer to decimal
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I was trying a multiplication in python
c = 0.72*5

instead of giving me 3.6 it returned 3.599999997 something like that...
whats that about ???? !!!
It's the way floating point arithmetic work, Basic Answers.
There is a Decimal module.
>>> from decimal import Decimal
>>> Decimal('0.72') * Decimal('5')
Decimal('3.60')
So you are saying that every time I have to do any mathematical work on python I have to import the decimal library and convert each number into decimal....that might get tedious for large programming
in any case you would like to use string formatting when print float numbers.

>>> x = 0.72*5
>>> x
3.5999999999999996
>>> '{:0.2f}'.format(x)
'3.60'
>>> 'the result of calculations is {:0.2f}'.format(x)
'the result of calculations is 3.60'
>>>
(Jun-19-2017, 07:03 AM)ArnabRoyBatman Wrote: [ -> ]So you are saying that every time I have to do any mathematical work on python I have to import the decimal library and convert each number into decimal....that might get tedious for large programming
No. Everyone (Python, Fortran, C, C#...) uses floating point, this is how rockets are sent to Saturn. Of course you have to learn to live with its idiosyncrasies. The cases where you want infinite precision are fairly rare (mostly when dealing with money).
You can also use scaled calculations like
>>> c = (72 * 5) / 100
>>> c
3.6
>>>
(Jun-19-2017, 11:20 PM)Larz60+ Wrote: [ -> ]You can also use scaled calculations like
>>> c = (72 * 5) / 100
>>> c
3.6
>>>

This is Python, not assembler :)
(Jun-19-2017, 07:03 AM)ArnabRoyBatman Wrote: [ -> ]So you are saying that every time I have to do any mathematical work on python I have to import the decimal library and convert each number into decimal....that might get tedious for large programming

This is not a Python problem. Please read what floating point is.
It depends what you want. To do scientific calculations, you won't use decimal. For financial calculations you have to.