JavaScript/Objekte/Intl/NumberFormat
Aus SELFHTML-Wiki
< JavaScript | Objekte | Intl
Die Konstruktorfunktion Intl.NumberFormat
dient zur Erzeugung von Objekten, mit denen Zahlenwerte kulturabhängig formatiert werden können.
Syntax
const formatter = new Intl.NumberFormat(locales, optionen);
- locales
- Die Angabe, welches Locale verwendet werden sollen. Im einfachsten Fall eine Zeichenkette mit einem BCP-47 Locale-Tag. Möglich ist auch ein Locale-Objekt oder ein Array. Mehr dazu im Übersichtsartikel.
- optionen
- Weitere Angaben zum gewünschten Verhalten des Formatierers. Diese Angaben werden in Form eines Objekts übergeben, dessen Eigenschaften die benötigten Verhaltensweisen festlegen. Die umfangreiche Liste dieser Optionen folgt im Anschluss.
Empfehlung: Die Konstruktorfunktion kann mit und ohne
new
-Operator aufgerufen werden. Der Aufruf ohne new
dient der Kompatibilität mit ECMA-402 Version 1 und sollte vermieden werden.Inhaltsverzeichnis
Verwendung
Das so erzeugte formatter
-Objekt kann verwendet werden, um Zahlen gemäß der bei der Erzeugung festgelegten Regeln als String zu formatieren. Dazu stellt es diese Methoden bereit:
Locale-Optionen
Einige dieser Optionen können als Locale-Extension dem Locale-Tag hinzugefügt werden. Das Kürzel dieser Extension ist dann in Klammern angegeben.
-
localeMatcher
- Siehe Übersichtsartikel
-
numberingSystem
(nu) - Das zu verwendende Zahlensystem. Das deutsche Locale gibt mit getNumberingSystems() an, dass es nur das System "Latn" unterstütze, aber es gibt mehr. Das CLDR Repository listet etliche Nummernsysteme auf, die in Form einer Ziffernliste definiert sind. All diese Nummernsysteme können Sie verwenden, beispielsweise
deva
(Sanskrit). Die Zahlensystemefullwide
,mathbold
,mathdbl
,mathmono
,mathsanb
undmathsans
bewirken die Ausgabe mit normal erscheinenden Ziffern, aber aus den speziellen Unicode-Bereichen "Halbbreite und vollbreite Formen" bzw. "Mathematical Alphanumeric Symbols". Wer Daten aus Ihrer Webseite auslesen möchte, hat damit zunächst einmal Extraarbeit. Insbesondere ein Screenreader - also nicht zwecks Zeichenformatierung verwenden! - Siehe auch Intl.Locale.
-
style
- Welcher Formatierungsstil verwendet werden soll. Mögliche Werte sind:
-
-
decimal
- Formatierung als einfache Zahl -
currency
- Formatierung als Geldbetrag mit Währung -
percent
- Formatierung als Prozentwert -
unit
- Formatierung zusammen mit einer Einheit
-
Optionen für style: "currency"
currency
- Die Währung, die verwendet wird. Hier muss ein ISO-4217 Währungscode wie
USD
oderEUR
angegeben werden. currencyDisplay
- Wie soll die Währung angezeigt werden? Mögliche Werte sind:
code
- der ISO Währungscode (EUR
)symbol
- das Währungssymbol (€, $)narrowSymbol
- ggf. ein verkürztes Währungssymbol. Z.B. ist die Symbol-Darstellung von australsischen DollarsA$
, die narrowSymbol-Darstellung hingegen nur$
name
- der Name der Währung, in der Sprache des Locale.
currencySign
- wie das Vorzeichen eines Währungsbetrags dargestellt werden soll. Mögliche Werte sind
standard
undaccounting
(Buchführung). Manche Locales stellen einen negativen Betrag im Buchführungsmodus dadurch dar, dass sie ihn einklammern, statt ein-
davor zu setzen.
Optionen für style: "unit"
-
unit
- Die zu verwendende Einheit. Die Liste möglicher Einheiten im CLDR ist sehr lang, und ECMA-402 unterstützt nur eine Teilmenge. Die ECMA-402 Spezifikation enthält dazu eine Liste der zulässigen Einheiten.
-
unitDisplay
- Die Art der Darstellung des Einheitennamens. Möglich Werte sind
long
,short
undnarrow
. Die lange Darstellung verwendet den Namen der Einheit in der Sprache des locale, die kurze und schmale Darstellung das Einheitensymbol.
Optionen für die Zahlendarstellung
minimumFractionDigits
- Wieviele Nachkommastellen sollen mindestens angezeigt werden. Der Standardwert ist für den "currency"-Stil von der Währung abhängig, andernfalls ist er 0.[1]
maximumFractionDigits
- Wieviele Nachkommastellen sollen höchstens angezeigt werden. Für Währungsangaben ist der Standardwert identisch zum minimumFractionDigits-Wert, bei anderen Stilen muss diese Option angegeben werden, wenn die minimumFractionDigits größer als 0 sind.
minimumIntegerDigits
- Mindestzahl der Ziffern vor dem Komma. Hat der zu formatierende Wert weniger Ziffern, wird mit Nullen aufgefüllt.
- Beachten Sie: Eine Formatierung im Bank-Stil mit Sicherungssternchen oder ähnlichem ist nicht vorgesehen.
minimumSignificantDigits
maximumSignificantDigits
- Minimum und Maximum der signifikanten Ziffern, die verwendet werden sollen. Ist eine Zahl größer, als signifikante Ziffern zugelassen wird, wird an der Stelle der letzten signifikanten Ziffer gerundet.
- Mit signifikanten Ziffern einer Zahl sind diejenigen Ziffern einer Zahl gemeint, die ihre Genauigkeit festlegen. Beispielsweise haben die Zahlen 12345 oder 12,345 fünf signifikante Ziffern. Ob die Zahl 12300 drei, vier oder fünf signifikante Ziffern hat, ist ihr nicht anzusehen, aber wenn man 12345 mit drei signifikanten Ziffern darstellen lässt, erzeugt JavaScript "12300". Lässt man 123 mit fünf signifikanten Ziffern formatieren, entsteht "123,00"
roundingPriority
- Die Angaben für signifikante Ziffern und Nachkommastellen können in Konflikt zueinander stehen. Über die
roundingPriority
legt man fest, wie der Konflikt aufzulösen ist. -
auto
- (Defaultwert) Das Ergebnis richtet sich nach den signifikanten Ziffern
morePrecision
- Die Formatierungsmöglichkeit mit mehr signifikanten Ziffern wird verwendet
lessPrecision
- Die Formatierungsmöglichkeit mit weniger signifikanten Ziffern wird verwendet
- Die Ermittlung der Formatierungsmöglichkeit verwendet maximumFractionDigits und maximumSignificantDigits. Die Mininumgrenzen werden nicht berücksichtigt.
roundingIncrement
- Ein Rundungsfaktor, Defaultwert ist 1. Seine Verwendung setzt voraus, dass
roundingPriority
auf "auto" gesetzt ist, keine Vorgabe für signifikante Ziffern gemacht wird und die Anzahl der minimalen und maximalen Nachkommastellen übereinstimmt. Der Rundungsfaktor legt fest, dass der Wert an der Position, die von der Nachkommastellenzahl festgelegt ist, auf ein Vielfaches des Rundungsfaktors gerundet wird. Dazu kann der Rundungsfaktor die Werte 1, 2, 5, 10, 20, 25, 50, 100, 200, 250, 500, 1000, 2000, 2500, und 5000 annehmen. - Runden auf 25 Cents
const formatter = new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR", roundingIncrement: 25 }); formatter.format(123.38); // Ergibt 123,50 €
roundingMode
- Es gibt erstaunlich viele Möglichkeiten, Rundungsregeln zu formulieren.
ceil
- Aufrunden (immer zum absolut größeren Wert hin)
floor
- Abrunden (immer zum absolut kleineren Wert hin)
expand
- Von der 0 weg runden (immer zum betragsmäßig größeren Wert hin)
trunc
- Zur 0 hin runden (immer zum betragsmäßig kleineren Wert hin)
halfCeil
- kaufmännisches Runden, aber immer zum absolut größeren Wert hin
halfFloor
- Kaufmännisches Runden, aber immer zum absolut kleineren Wert hin
halfExpand
- Standardwert. Kaufmännisches Runden gemäß DIN (immer von der 0 weg)
halfTrunc
- Kaufmännisches Runden, aber immer zum betragsmäßig kleineren Wert hin
halfEven
- Symmetrisches Runden gemäß IEEE 754, für Numerik, Ingenieure und Banken
trailingZeroDisplay
- Steuert den Umgang mit Nullen nach dem Komma. Mögliche Werte sind
auto
(Defaultwert) undstripIfInteger
. Im Auto-Modus werden abschließene Nullen ergänzt oder beibehalten, wenn die Angaben für Nachkommastellen oder signifikante Ziffern das so fordern. MitstripIfInteger
werden die Nachkommastellen vollständig entfernt, wenn nach dem Runden alle Nachkommastellen 0 sind
Weitere Optionen
notation
- Die Formatierung, die für die Zahl verwendet werden soll. Möglich sind die Werte
-
- standard
- Normale Formatierung als Dezimalzahl
- scientific
- „Wissenschaftliche“ Formatierung mit Mantisse und Exponent, z.B.
1,266E7
= 1,266·107. Der Betrag der Mantisse in der wissenschaftlichen Formatierung befindet sich immer im Bereich 1 ≤ m < 10. - engineering
- Ingenieursversion der wissenschaftlichen Notation, die den Exponenten als Vielfaches von 3 darstellt. Der Betrag der Mantisse kann dadurch im Bereich 1 ≤ m < 1000 liegen.
- compact
- Eine Variante der Ingenieursversion, bei der statt einer Exponentangabe ein Zahlwort verwendet wird, z.B.
1,2 Millionen
.
-
compactDisplay
- Zusatzoption zu notation:"compact", möglich ist "short" und "long". Das
de
Locale verwendet in der Short-Version die Abkürzungen „Mio.“, „Mrd.“ und „Bio.“, dasen
Locale nur einen einzelnen Buchstaben (K, M, B und T für Kilo, Million, Billion und Trillion). In der Langversion gibt dasde
Locale bereits 12400 als „12 Tausend“ aus, oder „12,4 Tausend“, wennmaximumFractionDigits
größer als 0 gesetzt ist. -
useGrouping
- Die Option steuert, ob Ziffern für die Darstellung gruppiert und ein Gruppentrennzeichen eingefügt wird, wie beispielsweise in
12.345,78
. Sie kennt die Werte"always"
,"auto"
,"min2"
,false
undtrue
. Wie gruppiert und welches Zeichen eingesetzt wird, hängt von Locale und gegebenenfalls auch von der Währung ab. - Wichtig:
false
undtrue
sind als boolesche Werte, also ohne Anführungszeichen, anzugeben! -
-
false
- Die Gruppierung wird nicht durchgeführt.
-
"always"
-
true
- Die Zahl wird immer gruppiert, auch wenn diese Darstellung im Locale nicht als Default gesetzt ist.
-
"auto"
- Ob gruppiert wird, richtet sich nach dem Locale und eventuell auch nach der Währung
-
"min2"
- Die Zahl wird gruppiert dargestellt, wenn jede Gruppe mindestens 2 Ziffern enthält
-
-
signDisplay
- Gibt an, wie das Vorzeichen dargestellt werden soll
-
-
auto
- Ein Vorzeichen wird nur für negative Zahlen erzeugt und (auch für -0)
-
always
- Ein Vorzeichen wird für positive Zahlen, für negative Zahlen und für 0 erzeugt
-
exceptZero
- Ein Vorzeichen wird für positive und für negative Zahlen erzeugt, nicht für 0 oder -0
-
negative
- Ein Vorzeichen wird nur negative Zahlen erzeugt, nicht für -0
-
never
- Das Vorzeichen wird nicht dargestellt (z.B. wenn Sie eine eigene Vorzeichenaufbereitung erstellen möchten)
-