>> DAVID MALAN: indi sizin fikrinizi əsəcək edək.
Bu bölünür real dünyada 1 çıxır 10 1/10 və ya 0,1 həqiqətən.
Lakin kompüter yalnız məhdud var ki, bit sayı ilə
nömrələri təmsil, siz həmişə bilməz 1/10 kimi nömrələri təmsil
mükəmməl dəqiq.
Başqa sözlə, kompüter bəzən qərar zənglər və etmək
mütləq sayı təmsil kimi dəqiq niyyətində kimi istəyirəm.
>> Məsələn, mən geri getmək Güman Bu proqram və 0.1 dəyişdirmək,
oh, 0.28, bununla ifadə edən Mən printf printf istəyirəm
Dəqiq 28 yerləri.
İndi saxlamaq və proqram tərtib edək, etmək floats2 ilə bu dəfə.
Dot çizgi floats2 ilə Run.
Və əziz Allah, mən 0.1 görmürəm bu dəfə, lakin olduqca olan 0.10000000,
Bu günə qədər yaxşı.
Amma sonra, 14901161193847656250.
>> Yaxşı, nə olub?
Bəli, bu bir float çıxır ki adətən kompüter daxilində saxlanılır
32 bit ilə.
32 açıq-aydın bir sonlu sayı, olan yalnız təmsil edə bilər ki, nəzərdə tutur
32 bit məhdud sayda ilə point dəyərləri üzən.
Təəssüf ki, o deməkdir ki, kompüter bütün mümkün təmsil edə bilməz
üzən point nömrələri, və ya real nömrələri, dünyada mövcud ki,
yalnız çox bit var.
>> Və belə ki, kompüter yəqin nə var Bu halda görülən 1/10 təqdim edir
ən yaxın üzən point dəyər ola bilər ki,.
Amma biz baxsaq, biz burada var, 28 decimal yerləri, biz görmək başlamaq
qeyri-dəqiqlik.
Belə ki, bu bir problem deyil Heç bir mükəmməl həll.
Biz əvəzinə bir float ikiqat istifadə edə bilərsiniz 64 bit istifadə etmək niyyətindədir
32 fərqli.
Amma əlbəttə, 64, həmçinin sonlu belə problem olacaq
hətta dubl qalır.