Kayan nokta sayıları çoğu ondalık sayıyı tam olarak temsil edemez, bu nedenle bir kayan nokta değişmezi yazdığınızda, gerçekte bu değişmez değerin yaklaşık bir değerini alırsınız. Yaklaşık değer, yazdığınız sayıdan daha büyük veya daha küçük olabilir.
Ondalık veya Kesir değerine çevirerek kayan nokta sayısının tam değerini görebilirsiniz.
>>> from decimal import Decimal
>>> Decimal(0.01)
Decimal('0.01000000000000000020816681711721685132943093776702880859375')
>>> from fractions import Fractio
>>> Fraction(0.01)
Fraction(5764607523034235, 576460752303423488)
Kesin olmayan değişmezimizin neden olduğu hatayı bulmak için Kesir türünü kullanabiliriz.
>>> float((Fraction(1)/Fraction(0.01)) - 100)
-2.0816681711721685e-15
Numpy'den nextafter kullanarak 100 civarında granüler çift kesinlikli kayar nokta sayılarının ne olduğunu öğrenebiliriz.
>>> from numpy import nextafter
>>> nextafter(100,0)-100
-1.4210854715202004e-14
Buradan, en yakın kayan nokta sayısının 1/0.01000000000000000020816681711721685132943093776702880859375aslında tam olarak 100 olduğunu tahmin edebiliriz .
Arasındaki fark 1//0.01ve int(1/0.01)yuvarlanmasıdır. 1 // 0.01 kesin sonucu tek bir adımda bir sonraki tam sayıya yuvarlar. Böylece 99 sonucunu elde ediyoruz.
int (1 / 0.01) ise iki aşamada yuvarlar, önce sonucu en yakın çift kesinlikli kayan nokta numarasına (tam olarak 100 olan) yuvarlar, sonra kayan nokta sayısını bir sonraki tamsayıya (yani yine tam 100).