Zahlenformatierer
Formatieren Sie Zahlen mit Tausendertrennzeichen, Abkürzungen, Währungssymbolen und benutzerdefinierten Dezimalstellen.
So funktioniert es
- Zahl eingeben: Tippen oder fügen Sie einen beliebigen Zahlenwert ein, Ganzzahlen, Dezimalzahlen, große Zahlen oder wissenschaftliche Notation.
- Formatoptionen wählen: Wählen Sie Ihre Lokalisierung (US, EU usw.), Dezimalstellen, Gruppentrennzeichen und bei Bedarf ein Währungssymbol.
- Formatiertes Ergebnis kopieren: Die Zahl erscheint sofort in Ihrem Wunschformat. Kopieren Sie sie für Berichte, Dokumente oder Datenexporte.
Warum den Zahlen-Formatter nutzen?
Zahlen bedeuten in unterschiedlichen Lokalen Unterschiedliches. In den USA wird Tausend als 1,000.00 geschrieben, in vielen europäischen Ländern als 1.000,00. Rohzahlen zwischen Systemen zu kopieren führt zu Parsing-Fehlern, falsch verstandenen Werten und finanziellen Fehlern. Der Zahlen-Formatter sorgt dafür, dass Ihre Zahlen für jedes Publikum korrekt erscheinen, ob Sie Finanzberichte vorbereiten, Inhalte lokalisieren oder Daten für eine Präsentation aufbereiten.
Funktionen
- Lokal-bewusste Formatierung: Unterstützt US-, EU- und internationale Zahlenformate mit korrekten Dezimal- und Gruppentrennzeichen.
- Dezimalstellen-Steuerung: Legen Sie genau fest, wie viele Dezimalstellen angezeigt werden sollen.
- Tausender-Gruppierung: Fügen Sie mit einem Klick Tausendertrennzeichen hinzu oder entfernen Sie sie.
- Währungs-Formatierung: Stellen Sie ein Währungssymbol voran und formatieren Sie als Geldwert.
- Wissenschaftliche Notation: Konvertieren Sie zu und von der wissenschaftlichen Notation für sehr große oder sehr kleine Zahlen.
Häufige Fragen
Was ist der Unterschied zwischen US- und europäischem Zahlenformat?
In den USA ist das Dezimaltrennzeichen ein Punkt (.) und das Tausendertrennzeichen ein Komma (,), z. B. 1,234.56. In den meisten Teilen Europas ist es umgekehrt: 1.234,56. Dieses Tool konvertiert korrekt zwischen beiden Formaten.
Kann ich Zahlen für Währungen formatieren?
Ja. Aktivieren Sie den Währungsmodus und wählen Sie ein Symbol ($ € £ ¥ usw.), um es der formatierten Zahl voranzustellen. Für Buchhaltungsformate mit speziellen Konventionen für negative Zahlen aktivieren Sie den Buchhaltungsmodus.
Werden sehr große oder sehr kleine Zahlen behandelt?
Ja. Der Formatter kommt mit Zahlen mit vielen Stellen klar und kann sie in Standard-, gruppierter oder wissenschaftlicher Notation anzeigen. Die Gleitkommagenauigkeit gilt für die konfigurierten Dezimalstellen.
Woher die Standards zur Zahlenformatierung kommen
Die Zahlenformate, die du heute in Software siehst, sind durch einen kleinen Stapel von Standards definiert, der dreißig Jahre brauchte, um sich zu festigen. IEEE 754 (1985), überarbeitet 2008 und 2019, legte das Bit-Layout binärer Gleitkommazahlen fest: 64 Bit aufgeteilt in 1 Vorzeichen, 11 Exponent, 52 Mantisse, was jede JavaScript-Zahl unter der Haube ist. ISO 4217 (1978, aktuelle Ausgabe 2015) definierte die dreibuchstabigen Währungscodes USD, EUR, JPY, INR, BRL und wie viele Untereinheiten jeder hat (2 für USD, 0 für JPY, 3 für KWD, 4 für CLF). Das Unicode CLDR (Common Locale Data Repository), erstmals 2003 veröffentlicht, ist der offene Datensatz, der Gruppentrennzeichen, Dezimaltrennzeichen, Währungssymbole und Pluralregeln für jede Locale aufzeichnet; aktuelle Version ist CLDR 46 (Oktober 2024). ECMA-402 (2012), die ECMAScript-Internationalisierungs-API, gab JavaScript eine native Anbindung an diese Daten via Intl.NumberFormat, das von ICU (International Components for Unicode) in V8, JavaScriptCore und SpiderMonkey unterstützt wird. Zusammen sorgen diese vier Specs dafür, dass (1234567).toLocaleString('de-DE') 1.234.567 zurückgibt statt 1,234,567.
Die sechs Locale-Muster, denen du begegnen wirst
Die meisten Zahlenformate in freier Wildbahn fallen in sechs Muster. Diese sechs zu merken deckt ~95% der Nutzerbasis jedes globalen Produkts ab.
- en-US, en-GB, ja-JP, zh-CN, ko-KR, Gruppe Komma, Dezimal Punkt:
1,234,567.89. - de-DE, es-ES, it-IT, nl-NL, pt-BR, Gruppe Punkt, Dezimal Komma:
1.234.567,89. Vorsicht beim Einfügen in ein US-Tabellenblatt. - fr-FR, ru-RU, sv-SE, pl-PL, Gruppe schmales geschütztes Leerzeichen (Unicode U+202F), Dezimal Komma:
1 234 567,89. Das Trennzeichen ist kein normales Leerzeichen; Kopieren und Einfügen durch Systeme, die Whitespace normalisieren, verfälscht es. - de-CH, Gruppe rechtes einfaches Anführungszeichen (U+2019), Dezimal Punkt:
1’234’567.89. Die Schweiz ist hier einzigartig. - en-IN, hi-IN, Gruppe Komma, Dezimal Punkt, aber Gruppierung ist 2-2-3 statt 3-3-3:
12,34,567.89. Das spiegelt das Lakh/Crore-System wider: 1 Lakh = 10⁵, 1 Crore = 10⁷. - ar-EG, ar-SA, arabisch-indische Ziffern (٠١٢٣٤٥٦٧٨٩), arabisches Dezimalzeichen U+066B, arabisches Tausendertrennzeichen U+066C:
١٬٢٣٤٬٥٦٧٫٨٩. Die meisten arabischsprachigen Entwicklerumgebungen verwenden intern lateinische Ziffern und wechseln nur für die Anzeige.
Rundungsmodi, was sie wirklich tun
ECMA-402 (2023) fügte neun Rundungsmodi zu Intl.NumberFormat hinzu. Die Wahl ändert Finanzsummen, wissenschaftliche Berichte und Steuerberechnungen. Drei sind in der Praxis am wichtigsten.
halfExpand(Standard). 2,5 rundet zu 3, −2,5 rundet zu −3. Das ist die Rundung, die alle in der Schule gelernt haben, und der JavaScript-Standard.halfEven(kaufmännische Rundung). 2,5 rundet zu 2, 3,5 rundet zu 4, Gleichstände gehen immer zur geraden Ziffer. Erforderlich durch IEEE 754 für Gleitkomma-Arithmetik. Verwendet in US-Steuertabellen, wissenschaftlicher Datenverarbeitung und großen Buchhaltungssystemen, um einen kleinen systematischen Bias zu entfernen, denhalfExpandüber Millionen von Rundungen einführt.trunc. Verwirft alles nach dem Schnitt ohne Rundung. 2,9 zu 2, −2,9 zu −2. Verwendet, wenn du buchstäblich Präzision verwerfen willst, niemals für Geld.- Die anderen sechs (
ceil,floor,expand,halfCeil,halfFloor,halfTrunc) behandeln spezialisierte Fälle wie immer aufrunden für Versandkosten oder immer abrunden für Steuerrabatte. Wähle bewusst, akzeptiere nicht den Standard, wenn Geld oder Compliance im Spiel sind.
Wo dieses Werkzeug seinen Wert beweist
- Finanzberichte. Formatiere Umsatz, Ausgaben, Verhältnisse für Präsentationen. Wechsle zwischen US- und EU-Formaten, um zum Land des Publikums zu passen.
- Locale-Prüfung deines Shops. Tippe einen Preis im gewünschten Format und überprüfe, dass es übereinstimmt mit dem, was deine E-Commerce-Seite für einen Kunden in Deutschland oder Indien rendert.
- CSV-Vorbereitung. Konvertiere deutsche
1.234,56-Zeilen in US1234.56vor dem Import in ein Blatt, das Dezimalpunkt erwartet, oder umgekehrt. - Indische Rupien-Formatierung. Mache aus 12.500.000 1,25,00,000 (1,25 Crore) für südasiatische Zielgruppen. Die meisten US-gebauten Tools tun das nicht.
- Kompakte Dashboard-Anzeige. Mache aus 1.234.567
1.23Mfür Widgets, wo horizontaler Platz knapp ist. Kompakte Notation ist auch Locale-aware: Deutsch zeigt1,23 Mio. - Währungssymbol als Präfix. Füge $, €, £, ¥, ₹ an der richtigen Position für jede Locale hinzu, der US-Dollar steht vorne, der deutsche Euro steht hinten.
- Excel-Escape für wissenschaftliche Notation. Eingefügte große IDs wie Twitter-Snowflakes werden in
1.23E+18umgewandelt und verlieren Präzision. Formatiere sie mit Gruppierung plus einem führenden Apostroph vor dem Einfügen, damit Excel sie als Text behandelt.
Fehler, die selbst erfahrenen Entwicklern passieren
- Gleitkomma-Arithmetik auf Geld.
0.1 + 0.2 === 0.30000000000000004in jeder IEEE-754-Sprache, nicht nur JavaScript. Speichere Währung als ganzzahlige Untereinheiten (Cents) oder verwende eine Dezimalbibliothek wiedecimal.js. Formatierung versteckt den Fehler, sie behebt ihn nicht. - Naives Parsen von Locale-Strings.
parseFloat("1,234.56")gibt1zurück, nicht1234.56.parseFloat("1.234,56")gibt1.234zurück. Um eine Locale-formatierte Zahl zu parsen, entferne Gruppentrennzeichen und ersetze dann die Dezimalmarke, idealerweise gesteuert durchIntl.NumberFormat(locale).formatToParts(). - Präzisionsverlust bei großen Ganzzahlen. Ganzzahlen über
2⁵³ − 1 = 9 007 199 254 740 991verlieren stillschweigend Präzision, wenn alsnumbergespeichert. Twitter-IDs, Stripe-IDs, Blockchain-Transaktions-Hashes überschreiten alle das. Empfange sie als Strings oder verwendeBigInt;Intl.NumberFormatakzeptiert BigInt nativ. - Stripe-Stil Untereinheiten. Stripe sendet
amount: 499für 4,99 $. Dividiere durch 100 (oder durch die ISO-4217-Untereinheitenzahl für die Währung) vor dem Formatieren. JPY, KRW, VND, ISK, HUF verwenden 0 Untereinheiten, keine Division nötig. - Prozent-Eingabe ist eine Bruchzahl.
new Intl.NumberFormat('en', {style: 'percent'}).format(0.5)gibt50%zurück, nicht0.5%. Multipliziere deinen gespeicherten Wert mit 0,01 vor dem Formatieren, wenn du ihn als Prozentsatz gespeichert hast. - NumberFormat in einer heißen Schleife konstruieren. Jeder Konstruktor-Aufruf lädt ICU-Locale-Daten. Verwende eine einzige Instanz über Aufrufe hinweg wieder: 1M Formatierungen mit einer zwischengespeicherten Instanz dauert ~60 ms in V8, ~3 s wenn du jedes Mal frisch konstruierst.
- JPY mit zwei Dezimalstellen.
¥1000.00ist falsch, weil JPY 0 Untereinheiten hat. SetzeminimumFractionDigits: 0, maximumFractionDigits: 0für JPY, KRW, VND, ISK, HUF, CLP.
Weitere häufig gestellte Fragen
Warum ist 0,1 + 0,2 nicht gleich 0,3?
Weil binäre IEEE-754-Gleitkommazahlen die Dezimalbruch 0,1 nicht exakt speichern können, genauso wie die Basis 10 1/3 nicht exakt speichern kann. Der nächste 64-Bit-Double zu 0,1 ist ungefähr 0,1000000000000000055511151231257827021181583404541015625. Zwei solcher Annäherungen zu addieren ergibt ein Ergebnis, das auf 0,30000000000000004 statt 0,3 rundet. Jede IEEE-754-Sprache hat dieses Verhalten: Java, Python, C++, Swift, alle. Für exakte Dezimalarithmetik verwende ganzzahlige Cents oder eine Bibliothek wie decimal.js / Pythons Decimal / Javas BigDecimal.
Was ist der Unterschied zwischen Intl.NumberFormat und toLocaleString?
Gleiche Engine, andere Ergonomie. (1234.5).toLocaleString('de-DE', {style: 'currency', currency: 'EUR'}) und new Intl.NumberFormat('de-DE', {style: 'currency', currency: 'EUR'}).format(1234.5) erzeugen identische Ausgabe. Der Unterschied: Intl.NumberFormat ist wiederverwendbar, wenn du also viele Zahlen mit denselben Optionen formatierst, instanziere einmal und cache. toLocaleString liest die Konstruktor-Optionen bei jedem Aufruf und ist dramatisch langsamer in engen Schleifen.
Wie funktioniert das indische Zahlensystem?
Indisches Englisch und Hindi gruppieren Ziffern in einem 2-2-3-Muster statt 3-3-3: die drei Ziffern ganz rechts, dann Gruppen zu zwei. 100.000 wird 1,00,000 geschrieben und ein Lakh (10⁵) genannt. 10.000.000 wird 1,00,00,000 geschrieben und ein Crore (10⁷) genannt. Intl.NumberFormat('en-IN').format(12345678) gibt 1,23,45,678 zurück. Das System erstreckt sich auf Arab (10⁹) und Kharab (10¹¹), obwohl diese im modernen Gebrauch selten sind.
Wie große Zahlen kann dieses Werkzeug verarbeiten?
Bis zu Number.MAX_SAFE_INTEGER = 2⁵³ − 1 = 9.007.199.254.740.991 überlebt jede Ganzzahl einen Hin- und Rückreise exakt. Darüber hinaus beginnt Präzision zu lecken. JSON.parse("9007199254740993") gibt 9007199254740992 zurück, den nächsten darstellbaren Double. Für größere Werte füge sie als BigInt-Literale ein (mit einem nachgestellten n) oder behandle sie als Strings. Der Formatierer akzeptiert beide.
Wird meine Zahl irgendwohin gesendet?
Nein. Intl.NumberFormat und die Locale-Daten werden mit deinem Browser ausgeliefert; die gesamte Pipeline läuft lokal. Öffne den Netzwerk-Tab in DevTools und formatiere eine Zahl, du siehst null ausgehende Anfragen. Sicher für Gehälter, Umsatz, Kontostände oder Daten, die du nicht in einen gehosteten Service einfügen würdest.