from fractions import Fraction
from math import ulp
from struct import pack, unpack
a_exact = Fraction(1,10)
b_exact = Fraction(2,10)
a_float = float(a_exact) #0.1
b_float = float(b_exact) #0.2
a_rat = Fraction(a_float)#не равно исходному 1/10
b_rat = Fraction(b_float)#не равно иходному 2/10
print(a_exact, a_float, a_rat)
d_float = a_float + b_float
d_exact = a_rat+b_rat
d_rat = Fraction(d_float)
absser = abs(d_rat-(a_exact + b_exact))
raller = absser / (a_exact + b_exact)
ulper = absser / Fraction(ulp(d_float))
print(absser)
print(raller)
print(ulper)
print(f"{unpack('>Q', pack('>d', d_float))[0]:064b}")