Ich hatte im Grunde die gleiche Anforderung und stellte fest, dass es für diese Funktionalität keinen eingebauten Mechanismus gibt.
Zusätzlich zum Trimmen der nachfolgenden Nullen musste ich auch die Ausgabe für das aktuelle Gebietsschema des Benutzers (dh 123.456.789) abrunden und formatieren.
Alle meine Arbeiten dazu wurden als prettyFloat.js (MIT Licensed) auf GitHub aufgenommen: https://github.com/dperish/prettyFloat.js
Anwendungsbeispiele:
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)
Aktualisiert - August 2018
Alle modernen Browser unterstützen jetzt die ECMAScript Internationalization API , die sprachempfindlichen Zeichenfolgenvergleich, Zahlenformatierung sowie Datums- und Uhrzeitformatierung bietet.
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"
Für ältere Browser können Sie diese Polyfüllung verwenden: https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en
1.234000 === 1.234
.