J'avais fondamentalement la même exigence et j'ai constaté qu'il n'y avait pas de mécanisme intégré pour cette fonctionnalité.
En plus de couper les zéros de fin, j'ai également eu besoin d'arrondir et de formater la sortie pour les paramètres régionaux actuels de l'utilisateur (c'est-à-dire 123 456 789).
Tout mon travail à ce sujet a été inclus sous le nom prettyFloat.js (sous licence MIT) sur GitHub: https://github.com/dperish/prettyFloat.js
Exemples d'utilisation:
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)
Mise à jour - août 2018
Tous les navigateurs modernes prennent désormais en charge l' API ECMAScript Internationalization , qui fournit une comparaison de chaînes sensible à la langue, la mise en forme des nombres et la mise en forme de la date et de l'heure.
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"
Pour les navigateurs plus anciens, vous pouvez utiliser ce polyfill: https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en
1.234000 === 1.234
.