>> Дејвид MALAN: Ајде сега удар вашиот ум.
Излезе во реалниот свет 1 поделени 10 е всушност 1/10, или 0,1.
Но во компјутери кои имаат само ограничен бројот на битови со која ќе се
претставуваат броеви, не можете секогаш претставуваат броеви како 1/10 со
совршена прецизност.
Со други зборови, компјутери понекогаш имаат да се направи проценка повици и не
мора претставува број ќе сакаат како токму како што имате намера.
>> На пример, да претпоставиме ќе се вратам во оваа програма и промена на 0,1 до,
ох, 0,28, а со тоа покажува дека Би сакал printf да printf да
28 места на прецизност.
Ајде сега ги спаси и да собере на програмата, овој пат со марка floats2.
Стартувај го со точка црта floats2.
И, драги Бог, овој пат јас не гледам 0.1, но 0.10000000, што е прилично
добро досега.
Но, тогаш, 14901161193847656250.
>> Па, што се случува?
Па, излегува дека плови е обично се чуваат во внатрешноста на компјутерот
со 32 бита.
32 е очигледно ограничен број, кој значи дека ти само може да претставува
со 32 бита конечен број на подвижна запирка вредности.
За жал, тоа значи дека компјутер не може да ги претставуваат сите можни
броеви со подвижна запирка, или реални броеви, кои постојат во светот,
поради тоа што има само толку многу бита.
>> И така што компјутерот е очигледно направи во овој случај се претставува 1/10 до
на најблиската можна лебдечки точка вредност што може.
Но, ако гледаме, како што го имаме овде, до 28 децимални места, ние почнуваме да се види дека
непрецизност.
Значи ова е проблем со нема совршено решение.
Можеме да го користиме двојно наместо плови, кој има тенденција да се користи 64 бита како
за разлика од 32.
Но, се разбира, 64, исто така, конечни, така што проблемот ќе
остане дури и со двојки.