ho questo:Elimina le cifre dopo il numero di due cifre decimali non arrotondato in javascript?
i=4.568;
document.write(i.toFixed(2));
uscita:
4.57
Ma io non voglio arrotondare l'ultimo numero a 7, cosa posso fare?
ho questo:Elimina le cifre dopo il numero di due cifre decimali non arrotondato in javascript?
i=4.568;
document.write(i.toFixed(2));
uscita:
4.57
Ma io non voglio arrotondare l'ultimo numero a 7, cosa posso fare?
Utilizzare invece la matematica semplice;
document.write(Math.floor(i * 100)/100);
Si può attaccare nel vostro propria funzione per il riutilizzo;
function myToFixed(i, digits) {
var pow = Math.pow(10, digits);
return Math.floor(i * pow)/pow;
}
document.write(myToFixed(i, 2));
La funzione non restituisce nulla ..! –
dovrebbe essere: document.write (Math.floor (i * 100)/100); –
Un approccio leggermente contorto:
var i=4.568,
iToString = i + '';
i = parseFloat(iToString.match(/\d+\.\d{2}/));
console.log(i);
Questo avviene effettivamente la variabile i
e lo converte in una stringa, quindi utilizza regex per abbinare i numeri prima del punto decimale e i due seguenti quel punto decimale, usando parseFloat()
per poi riconvertirlo in un numero.
Riferimenti:
Basta tagliare la stringa più lunga:
i.toFixed(3).replace(/\.(\d\d)\d?$/, '.$1')
grazie per il post SLaks – ranjenanil
toFixed è una soluzione più breve che fa il suo lavoro. – Mayhem
Quando si lavora con binario in virgola mobile, cose come questa possono accadere. – Pointy
@Pointy: No; semplicemente non vuole arrotondare. – SLaks
Sì, ma il mio punto è che in generale quando si ha a che fare con virgola mobile non si può garantire che una costante che si digita finirà per essere ciò che si pensa, arrotondando o non arrotondando, principalmente perché 2 e 5 sono relativamente primi: -) – Pointy