>>125 数字をどう扱うかだろうね。 
途中演算は全て分数で計算し結果も分数ならそれで終わりだし、最終的に浮動小数点数で表したければ何桁で丸めるかと言うだけの話だろ。
有理数として扱いたければ分数で最終まで扱うしかない。

from decimal import *
from fractions import Fraction
getcontext().prec = 28

f137 = Fraction(1,3)+Fraction(1,7) # 1/3 + 1/7 -> f137= 10/21
print(f137 , Decimal(float(f137)))
# 10/21 0.47619047619047616404230893749627284705638885498046875

同じことを普通の浮動小数点演算すると
print(13/+1/7)
# 0.47619047619047616