DAVID MALAN: Hai acum sufla mintea ta. Se pare în lumea reală 1 împărțit 10 este într-adevăr de 1/10, sau 0,1. Dar în computere care au doar o finit Numărul de biți în care să reprezintă numere, nu poți întotdeauna reprezintă numere, cum ar fi 1/10 cu precizie perfectă. Cu alte cuvinte, computere, uneori, au pentru a efectua apeluri de judecată și nu reprezintă în mod necesar numărul pe care Vreau ca exact cum intenționați. De exemplu, să presupunem că mă întorc în acest program și schimba 0,1 la, oh, 0,28, indicând astfel că Aș vrea să printf printf la 28 de locuri de precizie. Hai acum salva și compila programul, de data aceasta cu make floats2. Rulați-l cu punct floats2 slash. Și, Doamne, de data aceasta eu nu văd 0.1, dar 0.10000000, care este destul de bine până acum. Dar apoi, 14901161193847656250. Ei bine, ce se întâmplă? Ei bine, se pare că un flotor este de obicei stocat în interiorul unui calculator cu 32 de biți. 32 este în mod evident un număr finit, care implică faptul că poate reprezenta doar cu 32 de biți un număr finit plutitoare de valori punct. Din păcate, acest lucru înseamnă că calculator nu poate reprezenta toate posibile numere în virgulă mobilă, sau numere reale, care există în lume, deoarece are atât de multe biți. Și ce computerul este aparent face în acest caz se reprezintă 1/10 până la cel mai apropiat posibil flotarea Valoarea punct că se poate. Dar dacă ne uităm, așa cum avem aici, la 28 zecimale, vom începe să vedem că imprecizie. Deci, aceasta este o problemă cu nici o soluție perfectă. Putem folosi o dublă în loc de un flotor, care tinde să folosească 64 de biți ca spre deosebire de 32. Dar, desigur, 64 este, de asemenea, finit, deci problema va rămâne chiar și cu camere duble.