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
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
Si potrebbe fissare a 2 o il conteggio dei posti attuali ;
var result = num.toFixed(Math.max(2, (num.toString().split('.')[1] || []).length));
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
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.
Questo è un massimo di 4 posizioni decimali, questo non risolve il problema. – skmasq
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). –
Si prega di contrassegnare questo come risposta, se ha risolto il problema. –
Acquista http://numeraljs.com/ – adamb
Duplicato di http://stackoverflow.com/questions/6134039/format-number-to-always-show-2-decimal-places –
@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. –