dvaosta ha scritto:
La bibliografia citata ammette comunque che alcuni numeri decimali che hanno lunghezza finita in base 10 non possono essere rappresentati correttamente in base 2 usando i floating point, per cui non capisco il punto.
Il punto è che la rappresentazione floating point binaria fa acqua da tutte le parti (si usa un insieme di valori finito e con densità disomogenea per tentare malamente di mappare gli Aleph-1 valori del continuo, dunque ovviamente occorrono alcuni "trucchi" e parecchi compromessi), ma numeri decimali a lunghezza finita prefissata possono sempre essere rappresentati (anche in binario!) con precisione arbitrariamente grande usando semplicemente
valori interi, eventualmente aggregati, con una implicita moltiplicazione per una potenza intera segnata del dieci, ossia uno "spostamento della virgola". Tale formato prende appunto il nome di
fixed point, o scaling, come ripetuto più volte.
Inoltre, sempre usando solo rigorosamente interi di dimensione gestibile da un registro di una qualsiasi CPU mainstream, è possibile altresì usare i razionali, ossia coppie di interi che rappresentano dividendo e divisore. Esistono (rari) formati specifici di packing anche per i razionali, ma in genere le soluzioni più
cheap che non prevedono il ricorso ad apposite librerie consistono nell'intuitivo uso di una struttura contenente due interi a 32 o 64 bit (esattamente come per il calcolo sui numeri complessi, ancora più raro da trovare implementato in hardware rispetto all'IEEE 854), o nel convenzionale ricorso alla "normalizzazione" ad una frazione con numeratore unitario (frazione egizia e relativa aritmetica), che viene ovviamente omesso usando in ultima analisi un solo intero (esteso, se del caso) che indica solo il divisore o denominatore.
Ritengo comunque che l'OT sul FP e i suoi limiti si sia prolungato a sufficienza: se desideri aprire una nuova discussione per approfondire ulteriormente le questioni di rappresentabilità e stabilità numerica nei due standard FP e nelle varie basi numeriche (importantissimo il testo di Higham segnalato in bibliografia), sei il benvenuto.