Về cơ bản, tôi đã có cùng một yêu cầu và thấy rằng không có cơ chế tích hợp nào cho chức năng này.
Ngoài việc cắt bớt các số 0 ở cuối, tôi cũng có nhu cầu làm tròn và định dạng đầu ra cho miền địa phương hiện tại của người dùng (ví dụ 123,456.789).
Tất cả công việc của tôi về điều này đã được đưa vào dưới dạng beautifulFloat.js (Được cấp phép MIT) trên GitHub: https://github.com/dperish/prettyFloat.js
Ví dụ sử dụng:
prettyFloat(1.111001, 3) // "1.111"
prettyFloat(1.111001, 4) // "1.111"
prettyFloat(1.1111001, 5) // "1.1111"
prettyFloat(1234.5678, 2) // "1234.57"
prettyFloat(1234.5678, 2, true) // "1,234.57" (en-us)
Cập nhật - Tháng 8 năm 2018
Tất cả các trình duyệt hiện đại hiện hỗ trợ API quốc tế hóa ECMAScript , cung cấp so sánh chuỗi nhạy cảm ngôn ngữ, định dạng số và định dạng ngày và giờ.
let formatters = {
default: new Intl.NumberFormat(),
currency: new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, maximumFractionDigits: 0 }),
whole: new Intl.NumberFormat('en-US', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 }),
oneDecimal: new Intl.NumberFormat('en-US', { style: 'decimal', minimumFractionDigits: 1, maximumFractionDigits: 1 }),
twoDecimal: new Intl.NumberFormat('en-US', { style: 'decimal', minimumFractionDigits: 2, maximumFractionDigits: 2 })
};
formatters.twoDecimal.format(1234.5678); // result: "1,234.57"
formatters.currency.format(28761232.291); // result: "$28,761,232"
Đối với các trình duyệt cũ hơn, bạn có thể sử dụng polyfill này: https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en
1.234000 === 1.234
.