converte una variabile stringa JavaScript in decimale / denaro


114

Come possiamo convertire una variabile stringa JavaScript in decimale?

C'è una funzione come:

parseInt(document.getElementById(amtid4).innerHTML)

Risposte:


240

Sì - parseFloat.

parseFloat(document.getElementById(amtid4).innerHTML);

Per la formattazione dei numeri, usa toFixed:

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num è ora una stringa con il numero formattato con due cifre decimali.


1
Possiamo fare quella variabile con 2 punti decimali come 120,50? in questo momento ricevo solo 120,5.
Varada

16
Per citare @PhilipWhitehouse "Per favore, a chiunque legga questo in futuro, non utilizzare float per memorizzare la valuta. Perderai precisione e dati. Dovresti memorizzarlo come numero intero di centesimi (o penny ecc.) E poi convertire prima in uscita. ". Fonte: stackoverflow.com/questions/149055/…
SSH questo

@SSHThis Per quanto ne so JavaScript non ha un tipo intero. Ha solo un tipo di numero che sono tutti memorizzati internamente come numeri in virgola mobile a 64 bit. Il tuo punto è valido per altri linguaggi che hanno tipi interi come C #, C ++, ma non proprio per JavaScript.
Simon Brangwin,

1
@SimonBrangwin Il suo punto è ancora valido, ma la semantica può creare confusione. Ciò che intende veramente è "memorizzare solo la valuta come numeri interi in javascript poiché verranno memorizzati come numeri in virgola mobile".
Josh Noe

1
Solo un promemoria: parseFloat('22w')è 22ed parseFloat('w22')èNaN
IG Pascual

65

Puoi anche usare il Numbercostruttore / funzione (non c'è bisogno di una radice e utilizzabile sia per interi che per float):

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

In alternativa, come ha detto Andy E nei commenti, puoi usare +per la conversione

+'09'; /=> 9
+'09.0987'; /=> 9.0987

Questo non è supportato da IE11
Pantaloni

@Pants che riguarda le estensioni all'oggetto integrato Number in ES6 , non la possibilità di utilizzareNumber
KooiInc

11

Funziona:

var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);


2

È abbastanza rischioso affidarsi alle funzioni javascript per confrontare e giocare con i numeri. In javascript (0.1 + 0.2 == 0.3) restituirà false a causa di errori di arrotondamento. Usa la libreria math.js.


1

Un modo semplice e breve sarebbe quello di usare + x Mantiene intatto il segno così come i numeri decimali. L'altra alternativa è usare parseFloat (x). La differenza tra parseFloat (x) e + x è per una stringa vuota + x restituisce 0 dove come parseFloat (x) restituisce NaN.


1

Ho creato una piccola funzione di aiuto per farlo e catturare tutti i dati malformati

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

La demo è qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.