>> DAVID Malan: Sekarang mari kita meniup pikiran Anda.
Ternyata di dunia nyata 1 dibagi oleh 10 memang 1/10, atau 0,1.
Tapi dalam komputer yang hanya memiliki terbatas jumlah bit yang dapat digunakan untuk
mewakili angka, Anda tidak bisa selalu mewakili angka seperti 1/10 dengan
presisi sempurna.
Dengan kata lain, komputer kadang-kadang memiliki untuk membuat panggilan penghakiman dan tidak
selalu mewakili nomor Anda ingin setepat Anda berniat.
>> Misalnya, aku kembali ke program ini dan mengubah 0,1 sampai,
oh, 0,28, sehingga menunjukkan bahwa Saya ingin printf untuk printf untuk
28 tempat presisi.
Mari kita sekarang menyimpan dan mengkompilasi program, kali ini dengan make floats2.
Jalankan dengan dot slash floats2.
Dan, ya Tuhan, kali ini aku tidak melihat 0,1, tapi 0.10000000, yang cukup
baik sejauh ini.
Tapi kemudian, 14901161193847656250.
>> Nah, apa yang terjadi?
Nah, ternyata pelampung adalah biasanya disimpan dalam komputer
dengan 32 bit.
32 jelas merupakan jumlah terbatas, yang menyiratkan bahwa Anda hanya dapat mewakili
dengan 32 bit jumlah terbatas floating point nilai.
Sayangnya, itu berarti bahwa komputer tidak dapat mewakili semua kemungkinan
angka floating point, atau bilangan real, yang ada di dunia,
karena hanya memiliki begitu banyak bit.
>> Dan jadi apa komputer rupanya dilakukan dalam hal ini mewakili 1/10
yang terdekat mungkin floating nilai titik yang bisa.
Tetapi jika kita melihat, seperti yang kita miliki di sini, untuk 28 tempat desimal, kita mulai melihat bahwa
ketidaktepatan.
Jadi ini adalah masalah dengan tidak ada solusi yang sempurna.
Kita dapat menggunakan ganda bukannya pelampung, yang cenderung menggunakan 64 bit sebagai
lawan 32.
Tapi tentu saja, 64 juga terbatas, sehingga masalah akan
tetap bahkan dengan ganda.