2010-05-19 37 views
14

Bạn có biết nếu toFixed là một hàm được bản địa hóa không?Javascript toFixed được bản địa hóa?

Ý tôi là, sẽ này:

var n = 100.67287; 
alert(n.toFixed(2)); 

hiển thị "100,67" trên tiếng anh OS Mỹ/trình duyệt và "100,67" (với dấu phẩy) trên OS/trình duyệt Ý? (tiếng Ý hoặc bất kỳ hệ thống cục bộ nào khác sử dụng dấu phẩy làm dấu phân cách thập phân).

Cảm ơn!

+1

Hãy xem ['Number.toLocaleString()'] (https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Number/ToLocaleString). –

Trả lời

11

Không, điều này sẽ luôn trả về một điểm. Các ECMA 262-spec [15.7.4.5] nói rằng nó phải là một điểm.

0

Không có gì đáng buồn, không có giải pháp thực trong jQuery/JavaScript thuần túy. Bạn cần Globalize. Vấn đề là cả hai toFixed() và toLocaleString() lấy một số và trả về một chuỗi. Vì vậy, bạn không bao giờ có thể sử dụng chúng với nhau. :(Nếu bạn gọi foo.toFixed (2) .toLocaleString() bạn sẽ không nhận được nội địa hóa (tức là '1.234' trong vi nên là '1,234' trong fr) vì nó làm việc trên kết quả của toFixed() mà là một . chuỗi, không phải là một số :(

0

Bạn có thể sử dụng này:

var n = 100.67287; 
alert(parseFloat(n.toFixed(2)).toLocaleString()); 

Trên hệ thống Đức của tôi kết quả là

100,67 
+4

Đây là một thông minh hack, nhưng sẽ không hoạt động chính xác cho 100,00, mà sẽ dẫn đến "100" thông qua toLocaleString() –

+0

Tốt cho tôi! Cảm ơn! – Goin

1

Nó rất dễ dàng để hack giới hạn của nó

var num = 0.1; 
var decimalSeparator = num.toLocaleString().replace(/\d/g, ''); 
var numWithLocalizedSeparator = num.toFixed(2).replace('.',decimalSeparator); 
.
+0

nó không hoạt động nếu num = 1000.1 ví dụ, bởi vì decimalSeparator sẽ là ".," Sử dụng "es-ES" làm ngôn ngữ. – oriolparra

9

Cuối Ngoài ra: với Number.toLocaleString() bây giờ đã có trên thanh tất cả mọi thứ IE 10 & dưới đây, các công trình này, mặc dù khá dài dòng:

var n = 100.67287; 
alert(n.toLocaleString(undefined, { minimumFractionDigits:2, maximumFractionDigits:2 })); 

Xem developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString để biết chi tiết đầy đủ.

Nếu bạn rảnh để mở rộng nguyên mẫu Số, bạn có thể xác định Number.toLocaleFixed().

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