2011-01-14 13 views

Odpowiedz

18

Aby uzyskać pływaka o ograniczonej precyzji, można użyć toPrecision() jak to zrobić, a następnie przetworzyć notacji naukowej z parseFloat(), tak:

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

Jeśli zrobisz nie chcesz zmniejszać precyzji, możesz użyć numeru toFixed(), aby uzyskać liczbę z określoną liczbą miejsc po przecinku.

+1

Daje to 2 miejsca dziesiętne. Precyzja nie rozpoczyna się licząc od kropki dziesiętnej, ale od pierwszej cyfry. 'toPrecision (2)' for '" 555.55 "' oznaczałoby coś takiego jak 'toFixed (-1)' (które nie istnieje, ponieważ nie ma to sensu). –

+0

Dobra uwaga. Odpowiedź poprawiona. –

+0

To jest niesamowite. Ładnie formatuje duże liczby ("24823492.293849 -> 25000000") oraz liczby z dziesiętnym pyłem (np. 1/5 + 1/20 - 1/200 + 1/400 + 1/10 = 0.34750000000000003 -> 0.35') – prototype

0

Spróbuj

result = Math.ceil(555.55); 
+3

Daje to '556', a nie' 560', które reprezentuje '5.6e + 2'. –

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

http://jsfiddle.net/K5GRb/

+1

+1 i usunąłem moją własną odpowiedź. To jest całkowicie droga. –

+0

To jest lepsze niż parseFloat ((555,55) .to Precyzja (2)) – asmmahmud

-3

eval jest zła.

Czy

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

zamiast.

+1

toPrecision zwraca ciąg znaków, więc wywoływanie doString na tym nie miałoby znaczenia. –

+1

W FF3.5.3, nadal pokazuje 5.6e + 2 – Ricky

+0

Niestety, moje złe .. – timdream

Powiązane problemy