Issue
Im using the decimals module to try to avoid floating point errors. From the decimal module's documentary it says:
Decimal numbers can be represented exactly. In contrast, numbers like 1.1 and 2.2 do not have exact representations in binary floating point. End users typically would not expect 1.1 + 2.2 to display as 3.3000000000000003 as it does with binary floating point.
But when I try sum with decimals, I still get those floating point errors.
decimal.Decimal(4.04)+decimal.Decimal(4.04)
>>Decimal('8.080000000000000071054273576')
Why is this?
Solution
Try putting strings around your float literals, like so:
decimal.Decimal('4.04')+decimal.Decimal('4.04')
In the code in your question, the raw binary (base 2) "float"
type is passed to Decimal
. When you use strings to represent the number 4.04
for example, Decimal
represents '4.04'
precisely in base 10.
Answered By - Jerfov2 Answer Checked By - Cary Denson (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.