Precisione di MatLab
Lavorando in MatLab volevo fare qualche operazione in singola e doppia precisione per valutare le differenze tra le due. Non riesco però a capire come settare il tipo di precisione che voglio utilizzare. Ho provato con cast(x,'single') e cast(x,'double') per poi operare su x. In questo modo ottengo rispettivamente un ans a 8 e 16 cifre ma se ci opero sembrano entrambi a 16 cifre infatti, forzando la visualizzazione a 16 cifre con printf, i due sono esattamente uguali. Come posso risolvere?
Risposte
Se il numero è esattamente rappresentabile da un float, allora non ci sarà differenza tra le cifre di un float e quello di un double se fai la conversione con un cast. Che io sappia i double sono usati di default da matlab, per cui non è necessario fare ricorso ad un cast in quel caso, nell'altro caso puoi anche solo semplicemente usare la funzione single. Inoltre per visualizzare un numero con molte cifre puoi anche semplicemente inserire il comando 'format long' (senza virgolette). Ogni numero visualizzato dopo questo comando è visualizzato con un numero maggiore di cifre. A questo punto puoi provare il seguente codice (che ho testato con Octave ma il risultato dovrebbe essere lo stesso):
>format long >single(0.1) ans = 0.100000001490116 >0.1 ans = 0.100000000000000