2015-04-13 11 views
5

Da quello che ho letto, i numeri in JavaScript sono effettivamente memorizzati come punti mobili e non esiste un tipo intero reale. È accurato?Come posso gestire la valuta in JavaScript?

Se non esiste un numero intero, come posso memorizzare accuratamente le valute? Come una stringa o qualcosa del genere?

+1

Vedi anche http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript – Aerovistae

+0

"come posso memorizzare con precisione ?" JavaScript e il denaro reale non vanno bene insieme direi, principalmente dal punto di vista della sicurezza. – Jonathan

+1

http://stackoverflow.com/q/3730019/438992 –

risposta

9

[...] e non v'è alcun reale tipo intero. È accurato?

Sì.

Se non è presente un numero intero, come è possibile memorizzare correttamente le valute?

È comunque possibile utilizzare i valori che noi considereremmo come interi, vale a dire 5, 42, ecc Questi valori sono accurate. I valori "interi" perdono la precisione se sono> 2^53.

Quello che dovresti evitare, in qualsiasi lingua, utilizza numeri razionali per rappresentare la valuta, se esegui qualsiasi calcolo con esso. Significato, invece di 4.13, è necessario utilizzare 413.

Vedi Why not use Double or Float to represent currency?

valute
+1

Grazie! Questo mi aiuta molto e ha più senso! Quindi, stai dicendo che se volessi memorizzare $ 9,99, allora farei meglio a memorizzarlo come 999 e dividere per 100 dopo averlo recuperato? – timbram

+1

Sì! Memorizza i valori monetari nell'unità più piccola (ad esempio, penny). –

+0

È necessario memorizzarlo come 999, manipolarlo come 999 e trasformarlo in 9.99 solo quando lo si visualizza. –

0

Bene, se è solo la valuta, i numeri in virgola mobile dovrebbero andare bene. È possibile spostare/ruotare/ruotare il punto mobile su un numero intero se necessario.

+1

La ragionevolezza di questa risposta dipende * interamente * da ciò che sta effettivamente accadendo con la valuta in JS. –

-1

Per visualizzazione come valuta, toFixed è un ottimo metodo:

var someMoney = 123.1; 
var formattedCurrency = someMoney.toFixed(2); //this is now the string "123.10" 
console.log('$' + formattedCurrency); 
+0

@DougCoburn Forse ho frainteso te, ma il codice che hai fornito dovrebbe essere assolutamente 1.25 e 1.00. Penso che dovresti controllare di nuovo i tuoi calcoli oppure apprezzerei un'altra spiegazione del problema qui. L'OP ha chiesto come conservare le valute, questo è esattamente ciò che fa il mio codice. –

Problemi correlati