>> DAVID Malan: Idemo sad vas oduševiti.
Ispada u stvarnom svijetu 1 podijeljene po 10 je zapravo 1/10, odnosno 0.1.
No, u računala koja imaju samo konačna Broj bitova s ​​kojom
predstavljaju brojeve, ne možeš uvijek predstavljaju brojeve poput 1/10 s
savršena preciznost.
Drugim riječima, računala ponekad da prosudbe pozive i ne
nužno predstavljaju broj vas želim što preciznije namjeravate.
>> Na primjer, recimo da sam se vratiti u ovaj program i promijeniti 0,1 do,
oh, 0,28, čime se pokazuje da Volio bih da se printf printf se
28 mjesta preciznosti.
Idemo sada spasiti i sastaviti program, ovaj put s make floats2.
Pokrenite ga s dot slash floats2.
I, dragi Bože, ovaj put vidim ne 0,1, ali 0.10000000, što je prilično
dobro do sada.
Ali onda, 14901161193847656250.
>> Pa, što se događa?
Pa, ispada da je plovak obično pohranjeni unutar računala
s 32 bita.
32 je očito konačan broj, koji podrazumijeva da se samo može predstavljati
s 32 bita konačan broj od vrijednosti s pomičnim zarezom.
Na žalost, to znači da Računalo ne može predstavljati sve je moguće
pomičnim zarezom brojeve ili realni brojevi, koje postoje u svijetu,
jer ima samo toliko bitova.
>> I tako što računalo je očito učinjeno u ovom slučaju se predstavljaju 1/10 do
najbliži mogući Floating točka vrijednost da se može.
Ali, ako ćemo gledati, kao što smo ovdje, na 28. decimalnih mjesta, počinjemo vidjeti da
nepreciznost.
Dakle, to je problem s nije idealno rješenje.
Možemo koristiti dupli umjesto float, koji teži za korištenje 64 bita kao
za razliku od 32 godine.
Ali, naravno, 64 je konačan, pa će problem
ostaju čak i sa parovima.