2011-01-14 21 views

Trả lời

18

Để có được một phao với độ chính xác giảm, bạn có thể sử dụng toPrecision() như bạn làm, và sau đó phân tích các ký hiệu khoa học với parseFloat(), như vậy:

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

Nếu bạn làm không muốn giảm độ chính xác, bạn có thể sử dụng toFixed() để lấy số có số thập phân nhất định.

+1

Điều đó mang lại 2 số thập phân. Độ chính xác không bắt đầu đếm từ dấu thập phân, nhưng từ chữ số đầu tiên. 'toPrecision (2)' cho '" 555.55 "' có nghĩa là cái gì đó như 'toFixed (-1)' (không tồn tại vì nó không thực sự có ý nghĩa). –

+0

Điểm tốt. Trả lời sửa đổi. –

+0

Điều này thật tuyệt vời. Định dạng độc đáo này có số lượng lớn ('24823492.293849 -> 25000000') cũng như các số có bụi thập phân (ví dụ: 1/5 + 1/20 - 1/200 + 1/400 + 1/10 = 0,34750000000000003 -> 0,35) – prototype

0

Hãy thử

result = Math.ceil(555.55); 
+3

Điều này mang lại '556', không phải' 560' mà '5.6e + 2' đại diện. –

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

http://jsfiddle.net/K5GRb/

+1

+1 và xóa câu trả lời của riêng tôi. Đây hoàn toàn là con đường để đi. –

+0

Điều này là thích hợp hơn parseFloat ((555.55) .toPrecision (2)) – asmmahmud

-3

eval là ác.

Do

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

để thay thế.

+1

toPrecision trả về một chuỗi, do đó, gọi toString trên đó sẽ không tạo sự khác biệt. –

+1

Trong FF3.5.3, nó vẫn hiển thị 5.6e + 2 – Ricky

+0

Xin lỗi, lỗi của tôi .. – timdream

Các vấn đề liên quan