Decimal numbers in Python are displayed as floats

Question:

I have defined my variables as decimal but they are still output as float when I print them.

My actual problem has complex calculations and I want to print the values to verify my results but I’m getting floats not decimals.
Does this simply not matter as the calculations will come out correctly?

from decimal import Decimal
from decimal import getcontext
getcontext().prec = 6

a=Decimal(0.4)
print(a)
b=Decimal(0.3)
print(b)
x=(a/b)
print("x="+str(x))

Output

0.40000000000000002220446049250313080847263336181640625
0.299999999999999988897769753748434595763683319091796875
x=1.33333


** Process exited - Return Code: 0 **
Press Enter to exit terminal

Update

This makes for some pretty silly looking code.

from decimal import Decimal
from decimal import getcontext
from random import random
getcontext().prec = 6

a=Decimal(str(random()))
print(a)
b=Decimal(str(random()))
print(b)
x=(a/b)
print("x="+str(x))

Result
I still didn’t get the precision as I was expecting but I can work with that 🙂

0.27010708573406494
0.9726705675299723
x=0.277696

** Process exited – Return Code: 0 **
Press Enter to exit terminal

Asked By: David P

||

Answers:

can’t exactly figure out what’s causing this issue, but wrapping the decimals around quotes solved it for me:

a=Decimal("0.4")
print(a)
b=Decimal("0.3")
print(b)
x=(a/b)
print("x="+str(x))

Edit: It’s probably because the decimals are being initialized with the float values instead

Answered By: ACOG
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.