Saya memiliki persyaratan yang pada dasarnya sama, dan menemukan bahwa tidak ada mekanisme bawaan untuk fungsi ini.
Selain memotong nol trailing, saya juga harus membulatkan dan memformat output untuk lokal pengguna saat ini (yaitu 123.456.789).
Semua pekerjaan saya tentang ini telah dimasukkan sebagai prettyFloat.js (Berlisensi MIT) di GitHub: https://github.com/dperish/prettyFloat.js
Contoh Penggunaan:
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)
Diperbarui - Agustus 2018
Semua browser modern sekarang mendukung API Internasionalisasi ECMAScript , yang menyediakan perbandingan string yang peka bahasa, pemformatan angka, dan pemformatan tanggal dan waktu.
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"
Untuk browser yang lebih lama, Anda dapat menggunakan polyfill ini: https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en
1.234000 === 1.234
,.