Domanda

La domanda che intendevo porre riguardava la mantissa, non la esponente , e ha molto a che fare con la domanda che ho posto all'inizio della settimana riguardo a " mancante " cifre sulla somma di due float negativi.

Dato che la mantissa ha una precisione variabile, come si fa a sapere se si è traboccato dall'attuale impostazione di precisione della mantissa? Oppure, dal punto di vista proattivo, come si può sapere se è probabile un overflow di precisione della mantissa?

Cordiali saluti, Bruce.

È stato utile?

Soluzione

Esistono alcuni metodi numerici per vedere se perderai la precisione, ma la linea di fondo è che devi capire meglio la definizione di precisione.

-4939600281397002,2812

e

-4939600281397002,2812000000000000

NON sono lo stesso numero.

Quando aggiungi

-2234,6016114467412141

e

-4939600281397002,2812

insieme, l'output corretto avrà solo 20 cifre di precisione, perché le 12 cifre aggiuntive nel numero più piccolo sono prive di significato dato che le 12 cifre di dimensioni simili nel numero più grande sono sconosciute . Puoi implicare che sono zero, ma in tal caso devi dichiararli esplicitamente come tali e utilizzare un sistema di numerazione in grado di gestirlo - il computer non è bravo a comprendere le intenzioni implicite.

Per quanto riguarda il rilevamento di questo problema, tutto quello che devi fare è scoprire se hanno lo stesso esponente (supponendo una mantissa normalizzata +/- 1 o un equivalente binario simile). Se non sono normalizzati, è necessario normalizzarli per il confronto o utilizzare un confronto leggermente più complesso con l'esponente.

Precisione e accuratezza non sono la stessa cosa ...

-Adam

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top