2013-12-09 29 views
9

Desidero formattare un numero in modo che contenga sempre almeno due cifre decimali.Visualizza sempre almeno due cifre decimali

Campioni:

1 
2.1 
123.456 
234.45 

uscita:

1.00 
2.10 
123.456 
234.45 
+0

Acquista http://numeraljs.com/ – adamb

+0

Duplicato di http://stackoverflow.com/questions/6134039/format-number-to-always-show-2-decimal-places –

+3

@DavidBarker La domanda che hai collegato prende 2 decimali a prescindere se ce ne sono di più, questo non è ciò che l'op ha chiesto. –

risposta

11

Si potrebbe fissare a 2 o il conteggio dei posti attuali ;

var result = num.toFixed(Math.max(2, (num.toString().split('.')[1] || []).length)); 
0

Prova questo:

var num = 1.2; 
function decimalPlaces(num) { 
    var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); 
    if (!match) { return 0; } 
    return Math.max(
     0, 
     // Number of digits right of decimal point. 
     (match[1] ? match[1].length : 0) 
     // Adjust for scientific notation. 
     - (match[2] ? +match[2] : 0)); 
} 
if(decimalPlaces(num) < 2){ 
    num = num.toFixed(2); 
} 
alert(num); 

Ecco jsfiddle

+1

uscita è '1.23', vorrei' 1.2345' – skmasq

+0

Si prega di provare nuovamente! Mi dispiace per il mio errore. – HICURIN

0

Prova questa soluzione (di lavoro),

var a= 1, 
    b= 2.1, 
    c = 123.456, 
    d = 234.45; 

console.log(a.toFixed(4).replace(/0{0,2}$/, "")); 
console.log(b.toFixed(4).replace(/0{0,2}$/, "")); 
console.log(c.toFixed(4).replace(/0{0,2}$/, "")); 
console.log(d.toFixed(4).replace(/0{0,2}$/, "")); 

Se si dispone di più cifre decimali, è possibile aggiornato il numero facilmente.

+0

Questo è un massimo di 4 posizioni decimali, questo non risolve il problema. – skmasq

+0

Si prega di vedere l'ultima riga nella risposta. Puoi cambiarlo con qualsiasi numero di cifre decimali, ad es. 'c.toFixed (10) .replace (/ 0 {0,8} $ /," ")' Il primo numero è il numero massimo di posizioni decimali che possiamo avere (10 in questo caso) e il secondo numero è max -min (8 in questo caso). –

+0

Si prega di contrassegnare questo come risposta, se ha risolto il problema. –

Problemi correlati