La perdita di significatività e la cancellazione catastrofica nasce, nei linguaggi di programmazione, dalle approssimazioni. Queste, genereranno inevitabilmente degli errori, i quali però non possono essere evitati in quanto sono insiti nel sistema.
Per fare un primo esempio supponiamo di prendere due numeri A e B molto vicini, stessa parte intera ma differenza di qualche decimale molto piccolo, e di effettuare l’operazione sottrazione tra i due. Da questa operazione si otterrà una sequenza di zeri, a meno dei valori decimali per cui si distinguevano i due numeri. C’è stata quindi una perdita di significatività in quanto con questa operazione tutte le cifre sono state trasformate in zero. Siamo cioè passati da due numeri con un’alta precisione a un numero con una bassa precisione. Un altro caso in cui possiamo riscontrare questo problema si ha quando, dati è due numeri tali che uno è molto grande rispetto all’altro, si vuole ottenere la loro somma. In questo caso infatti si otterrà una approssimazione del numero molto piccolo, generando una perdita di informazione.
Questa perdita di significatività ottenuta con una sola operazione viene chiamata cancellazione catastrofica. Quindi non è un effetto cumulativo di tanti errori di approssimazione, ma una perdita che abbiamo ottenuto con una sola operazione.
Esistono però, degli algoritmi costruiti apposta per ovviare questo tipo di problemi, uno dei quali è l’algoritmo di Knuth.
