Apart Decimal, you can also use the fractions module, which will enable handling arbitrary denominators like:
from fractions import Fraction
print(Fraction(1,3) + Fraction(4,7) + Fraction(2,21))
Also works with Fraction('0.85') + Fraction('0.15')
or Fraction('2/6')
.
Note that the result of adding Fractions is a Fraction, eventually with denominator == 1, so instead of testing is_integer()
, you have to replace with a denominator check, or with equality of int conversion:
collection = [Fraction(each) for each in ['0.85', '0.85', '0.15', '0.15']]
sum = sum(collection)
print(sum.denominator == 1)
print(int(sum) == sum)
In some languages including Smalltalk, Fractions are automatically reduced to Integer when denominator is 1, making the code a bit less brittle...
^((1/3) + (4/7) + (2/21)) isInteger