Successivo: Gli errori si sommano, Precedente: Rappresentazioni inesatte, Su: Inesattezza nei calcoli [Contenuti][Indice]
Poiché la rappresentazione interna del computer può discostarsi, sia pur di poco, dal valore esatto, confrontare dei valori a virgola mobile per vedere se sono esattamente uguali è generalmente una pessima idea. Questo è un esempio in cui tale confronto non funziona come dovrebbe:
$ gawk 'BEGIN { print (0.1 + 12.2 == 12.3) }' -| 0
Il metodo generalmente seguito per confrontare valori a virgola mobile consiste nel controllare se la differenza tra loro è minore di un certo valore (chiamato delta, o tolleranza). Quel che si deve decidere è qual è il valore minimo di delta adeguato. Il codice per far ciò è qualcosa del genere:
delta = 0.00001 # per esempio differenza = abs(a) - abs(b) # sottrazione dei due valori if (differenza < delta) # va bene else # non va bene
(Si presuppone che sia stata definita in qualche parte del programma una
semplice funzione che restituisce il valore assoluto di un numero,
chiamata abs()
.)