Per chi programma, prima o poi arriva il momento dello shock:
0.1 + 0.2 = 0.30000000000000004
Non è un bug del linguaggio. È il modo in cui funzionano i computer.
Il problema non è il computer, è la matematica
I computer rappresentano i numeri usando il sistema binario.
Il problema è che molti numeri decimali (come 0.1) non hanno una rappresentazione finita in base 2, proprio come 1/3 non ha una rappresentazione finita in base 10.
Quindi il computer memorizza:
- un’approssimazione,
- estremamente precisa,
- ma non perfetta.
Floating point: veloce ma imperfetto
I numeri in virgola mobile (floating point) sono progettati per:
- essere veloci,
- occupare poca memoria,
- funzionare bene per la maggior parte dei calcoli scientifici.
Non sono progettati per essere “esatti”.
Quando l’errore conta davvero
Nella maggior parte dei casi l’errore è invisibile.
Ma in ambiti come:
- finanza,
- contabilità,
- calcoli legali,
può diventare un problema serio.
Per questo, in quei contesti, si usano:
- numeri interi,
- decimali a precisione fissa,
- librerie specializzate.
Lezione chiave: il computer non sbaglia.
Fa esattamente ciò che gli chiediamo, anche quando non ci piace il risultato.
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta