È possibile aumentare la precisione dei numeri in virgola mobile?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />CIAO.C'è un modo per specificare la precisione in virgola mobile utilizzata da JSL durante l'esecuzione dei calcoli?Ovvero, il numero di cifre significative utilizzate.Ad esempio, sul mio computer 1 meno 1e-15 equivale a 0,999... (15 "9").Ma se provo 1 meno 1e-16, ottengo solo 1.
x = 1;
y = 1e-15;
z = x - y;
Mostra(z); //z = 0.999999999999999 (ovvero 15 cifre decimali)
y = 1e-16;
z = x - y;
Mostra(z); // z = 1
Grazie.
Re: Possibile aumentare la precisione dei numeri in virgola mobile?Ecco lo script completo che ho eseguito per darti i risultati che ho pubblicato.
X = 1 ;
si = 1e-15 ;
z.z = X - si ;
Spettacolo ( z.z ) ; //z = 0.999999999999999 (ovvero 15 cifre decimali)
si = 1e-16 ;
z.z = X - si ;
Spettacolo ( formato ( z.z , "Dicembre fisso" , 30 , 20 )) ;
Ho eseguito lo script in 11.21.1 e ho ottenuto i risultati che hai riportato.Quindi la differenza è il passaggio alla versione 12.2.
Re: Possibile aumentare la precisione dei numeri in virgola mobile?Ciao di nuovo Jim.Anche realizzato un'altra domanda importante.Nel tuo post hai indicato che il risultato del problema 1 meno 1e-16 era:
0,999999999999999 8 9000
(Notare "8" nella 16a cifra decimale)
Era un errore di battitura?
Re: Possibile aumentare la precisione dei numeri in virgola mobile?Jim,
Mi dispiace ma sembra che non funzioni sul mio sistema.Ho usato il comando format e la risposta è stata comunque "1".Ovviamente funziona sul tuo sistema, ma non sul mio.La mia azienda ci fa ancora utilizzare JMP 11.2.1, se è importante.Il mio computer ha meno di 1 anno però.
Domanda: la documentazione per Format è un po' confusa.
s = Format(x, formatstring, , , < <)
Sulla base di ciò, il "20" nel tuo comando occupa il campo del codice valuta e il "30" occupa il campo ndecimale.Naturalmente mi interessa quest'ultimo.Qual è lo scopo del "20"?
Re: Possibile aumentare la precisione dei numeri in virgola mobile?JMP utilizza il supporto a virgola mobile hardware standard.IEEE floating point - Wikipedia, l'enciclopedia libera
Ci sono circa 15 cifre significative, come hai notato.
JMP non supporta rappresentazioni più lunghe.(Le librerie Big Int, Big Num non sono in JMP in questo momento)
COME xnelson sottolinea che a volte un formato predefinito per la stampa di un numero potrebbe non mostrare tutte le 15 cifre eventualmente interessanti.
Re: Possibile aumentare la precisione dei numeri in virgola mobile?Quello che stai vedendo è JMP che tenta di visualizzare i dati in un formato intuitivo predefinito.La precisione dietro il valore non cambia quando si specifica un formato in cui visualizzare il valore.Quindi, se specifichi di visualizzare il valore di "z" con maggiore precisione, lo farà.
Show(format(z, "Fixed Dec", 30, 20)); = "0.99999999999999989000";