2013-10-29 18 views
7

Tôi có vấn đề nhỏ với hàm JavaScript toFixed(2).Làm tròn số thập phân bằng cách sử dụng toFixed

Nếu tôi làm tròn số thập phân này 45.24859, tôi nhận được 45.25 bằng cách sử dụng chức năng này.

Nhưng vấn đề của tôi là, nếu tôi làm tròn 10 (nó không có phần thập phân), hàm sẽ trả về số thập phân 10.00.

Làm cách nào để khắc phục sự cố này?

Vấn đề của tôi là, nếu nhập một số không có phần thập phân, hàm sẽ trả về một số không thập phân.

+0

thể trùng lặp của [Vòng lên đến nơi 2 chữ số thập phân trong javascript] (http://stackoverflow.com/questions/11832914/round-up- to-2-decimal-places-in-javascript) – Sarath

+0

xin lưu ý rằng điều này KHÔNG có liên quan gì đến jQuery một chút. –

Trả lời

7

Một cách khác để giải quyết điều này

DEMO

.indexOf()

function roundNumber(num){ 
    return (num.toString().indexOf(".") !== -1) ? num.toFixed(2) : num; 
} 


Dưới đây giải pháp không tương thích với tất cả các trình duyệt.

hoặc

function roundNumber(num){ 
    return (num.toString().contains(".")) ? num.toFixed(2) : num; 
} 

.contains()

+0

cả hai đều không hoạt động .. – rplg

+0

@rplg Đã khắc phục sự cố kiểm tra ngay bây giờ. –

+0

Cảm ơn bạn Tushar Gupta..now nó hoạt động .. – rplg

6

Chúng ta có thể kiểm tra số là số thập phân hay không với điều này Check if a number has a decimal...

Vì vậy, kết hợp mà bạn có thể sử dụng chức năng này

function roundNumber(num){ 
    return num % 1 != 0 ? num.toFixed(2) : num; 
} 

Hoặc Tôi nghĩ rằng lựa chọn tốt hơn sẽ được sử dụng

Math.round(num * 100)/100 
+0

Cảm ơn bạn Sarath Saleem .. Nó hoạt động. – rplg

+0

Bạn không xử lý trường hợp từ 10.1 đến 10.10 – bjb568

+0

10.1 phải là 10.10 rt ..? – Sarath

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