2011-01-14 14 views

risposta

18

Per ottenere un galleggiante con ridotta precisione, si potrebbe usare toPrecision() come si fa, e quindi analizzare la notazione scientifica con parseFloat(), in questo modo:

result = parseFloat(num.toPrecision(2)); 

Se lo fai per non ridurre la precisione, è possibile utilizzare toFixed() per ottenere il numero con un determinato numero di decimali.

+1

Questo produce 2 decimali. La precisione non inizia a contare dal punto decimale, ma dalla prima cifra. 'toPrecision (2)' per '" 555.55 "' significherebbe qualcosa come 'toFixed (-1)' (che non esiste perché non ha molto senso). –

+0

Buon punto. Risposta riveduta. –

+0

È fantastico. Formatta bene grandi numeri ('24823492.293849 -> 25000000') e numeri con polvere decimale (es. 1/5 + 1/20 - 1/200 + 1/400 + 1/10 = 0.34750000000000003 -> 0.35') – prototype

0

Prova

result = Math.ceil(555.55); 
+3

Questo produce '556', non' 560' che '5.6e + 2' rappresenta. –

10
Number((555.55).toPrecision(2)) 

http://jsfiddle.net/K5GRb/

+1

+1, e cancellata la mia risposta. Questa è completamente la strada da percorrere. –

+0

Questo è preferibile a parseFloat ((555.55) .toPrecision (2)) – asmmahmud

-3

eval è male.

fare

var result = num.toPrecision(2).toString(10);

invece.

+1

toPrecision restituisce una stringa, quindi chiamare a Stringa su quello non farebbe differenza. –

+1

In FF3.5.3, mostra ancora 5.6e + 2 – Ricky

+0

Scusa, il mio male .. – timdream

Problemi correlati