Angka floating point tidak dapat mewakili angka desimal paling tepat, jadi ketika Anda mengetik floating point literal Anda benar-benar mendapatkan perkiraan dari literal itu. Perkiraan mungkin lebih besar atau lebih kecil dari angka yang Anda ketikkan.
Anda dapat melihat nilai tepat angka floating point dengan memberikannya ke Desimal atau Fraksi.
>>> from decimal import Decimal
>>> Decimal(0.01)
Decimal('0.01000000000000000020816681711721685132943093776702880859375')
>>> from fractions import Fractio
>>> Fraction(0.01)
Fraction(5764607523034235, 576460752303423488)
Kita dapat menggunakan tipe Fraksi untuk menemukan kesalahan yang disebabkan oleh literal tidak tepat kita.
>>> float((Fraction(1)/Fraction(0.01)) - 100)
-2.0816681711721685e-15
Kita juga bisa mengetahui bagaimana angka floating point presisi granular ganda sekitar 100 adalah dengan menggunakan selanjutnya dari numpy.
>>> from numpy import nextafter
>>> nextafter(100,0)-100
-1.4210854715202004e-14
Dari sini kita dapat menduga bahwa angka floating point terdekat 1/0.01000000000000000020816681711721685132943093776702880859375sebenarnya adalah 100.
Perbedaan antara 1//0.01dan int(1/0.01)merupakan pembulatan. 1 // 0,01 membulatkan hasil yang pasti ke seluruh angka berikutnya dalam satu langkah. Jadi kami mendapatkan hasil 99.
int (1 / 0,01) di sisi lain putaran dalam dua tahap, pertama putaran hasil ke nomor floating point presisi ganda terdekat (yang persis 100), kemudian bulat bahwa angka floating point turun ke bilangan bulat berikutnya (yaitu lagi tepat 100).