Hai davvero due domande qui.
Perché qualcuno ha bisogno della matematica in virgola mobile, comunque?
Come sottolinea Karl Bielefeldt, i numeri in virgola mobile consentono di modellare quantità continue - e le trovi ovunque - non solo nel mondo fisico, ma anche in luoghi come affari e finanza.
Ho usato la matematica in virgola mobile in molte, molte aree della mia carriera di programmazione: chimica, lavorando su AutoCAD e persino scrivendo un simulatore Monte Carlo per fare previsioni finanziarie. In effetti, c'è un ragazzo di nome David E. Shaw che ha utilizzato a Wall Street tecniche di modellazione scientifica basate su virgola mobile per guadagnare miliardi.
E, naturalmente, c'è la computer grafica. Mi consulto nello sviluppo di eye candy per le interfacce utente e provando a farlo al giorno d'oggi senza una solida comprensione di virgola mobile, trigonometria, calcolo e algebra lineare, sarebbe come presentarsi a uno scontro a fuoco con un coltellino.
Perché qualcuno dovrebbe aver bisogno di un float contro un doppio ?
Con le rappresentazioni standard IEEE 754, un float a 32 bit offre circa 7 cifre decimali di precisione ed esponenti nell'intervallo da 10 -38 a 10 38 . Un doppio a 64 bit fornisce circa 15 cifre decimali di precisione ed esponenti nell'intervallo da 10 -307 a 10 307 .
Potrebbe sembrare che un galleggiante sarebbe sufficiente per ciò di cui qualcuno avrebbe ragionevolmente bisogno, ma non lo è. Ad esempio, molte quantità del mondo reale sono misurate in più di 7 cifre decimali.
Ma più sottilmente, c'è un problema colloquialmente chiamato "errore di arrotondamento". Le rappresentazioni binarie in virgola mobile sono valide solo per valori le cui parti frazionarie hanno un denominatore che ha una potenza di 2, come 1/2, 1/4, 3/4, ecc. Per rappresentare altre frazioni, come 1/10, devi "arrotondare" il valore alla frazione binaria più vicina, ma è un po 'sbagliato - questo è "errore di arrotondamento". Quindi, quando fai matematica su quei numeri inaccurati, le imprecisioni nei risultati possono essere molto peggiori di quelle che hai iniziato - a volte le percentuali di errore si moltiplicano o addirittura si accumulano in modo esponenziale.
Comunque, più cifre binarie devi lavorare, più la tua rappresentazione binaria arrotondata sarà vicina al numero che stai cercando di rappresentare, quindi il suo errore di arrotondamento sarà minore. Quindi, quando fai matematica su di esso, se hai molte cifre con cui lavorare, puoi fare molte più operazioni prima che l'errore di arrotondamento cumulativo si accumuli fino a dove è un problema.
In realtà, i 64 bit raddoppiano con le loro 15 cifre decimali non sono sufficienti per molte applicazioni. Stavo usando numeri a virgola mobile a 80 bit nel 1985 e IEEE ora definisce un tipo a virgola mobile a 128 bit (16 byte), per il quale posso immaginare gli usi.