JavaScript/Objekte/Intl/NumberFormat/formatRangeToParts

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Mit Hilfe der Intl.NumberFormat-Konstruktorfunktion erstellt man ein Formatierer-Objekt mit einem vorgegebenen Ausgabelayout.

Die Methode formatRangeToParts eines solchen Formatierers kann mit zwei Zahlen (Number oder BigInt) aufgerufen werden, um mit diesen Zahlen gemäß dem eingestellten Layout einen "von - bis" Bereich darzustellen. Das Ergebnis wird dabei nicht als eine Zeichenkette ausgegeben, sondern in Form eines Arrays, das die Teilelemente des Ergebnisses aufzählt.

Beispiel
const fmt3 = new Intl.NumberFormat("de-DE", { minimumFractionDigits: 3, maximumFractionDigits: 3 });

console.log(fmt3.formatRangeToParts(123.4, 767.2127));      // 123.400–767.213

// 0 : {type: 'integer', value: '123', source: 'startRange'}
// 1 : {type: 'decimal', value: '.', source: 'startRange'}
// 2 : {type: 'fraction', value: '400', source: 'startRange'}
// 3 : {type: 'literal', value: '-', source: 'shared'}
// 4 : {type: 'integer', value: '767', source: 'endRange'}
// 5 : {type: 'decimal', value: '.', source: 'endRange'}
// 6 : {type: 'fraction', value: '213', source: 'endRange'}
// length: 7

Jeder Eintrag im erzeugten Array enthält ein Objekt mit den Eigenschaften type, value und source. Die type Eigenschaft beschreibt, welcher Art dieser Teil des Ergebnisses ist. Das Beispiel zeigt integer für die Vorkommastellen, fraction für die Nachkommastellen, decimal für das Dezimaltrennzeichen und literal für das Verbindungszeichen. Aber wenn Sie sich überlegen, wie umfangreich die Optionen für Intl.NumberFormat sind, dann werden Sie sich nicht wundern, wenn es insgesamt viel mehr Typwerte gibt.

integer
Die Vorkommastellen. Vorsicht, wenn mit Zifferngruppierung formatiert wird, gibt es mehr als einen Eintrag mit Typ integer.
fraction
Die Nachkommastellen.
decimal
Das Dezimaltrennzeichen
literal
Das "bis"-Zeichen. Es können aber auch die Klammern um eine Zahl sein, wenn die currencySign-Option auf accounting steht. Falls eine Vorzeichenklammer und das "bis"-Zeichen direkt beisammen stehen, werden sie zu einem Literal zusammengefasst!
approximatelySign
Wenn man formatRange mit zwei gleichen Werten aufruft, erhält man kein Intervall, sondern eine "Ungefähr" Angabe: fmt3->formatRange(123, 123) ergibt "≈123,000". Das "ungefähr"-Zeichen ist natürlich Locale-spezifisch. formatRangeToParts weist mit diesem Typ das ungefähr-Zeichen aus.
minusSign
Das Vorzeichensymbol für negative Zahlen, sofern nötig und aktiviert
plusSign
Das Vorzeichensymbol für positive Zahlen, sofern nötig und aktiviert
group
Das Gruppentrennzeichen, wenn Zifferngruppierung verwendet wird. Achtung: Wenn gruppiert wird, erhalten Sie für jede Zifferngruppe einen integer Eintrag.
exponentSeparator
Das 'E' für Exponentialzahlen
exponentInteger
Der Exponent selbst
exponentMinusSign
Das Vorzeichen-Minus für den Exponenten
compact
"Mio." oder "Millionen" in der "compact"-Notation
currency
Eine Währungsangabe. Diese kann vor oder hinter der Zahl stehen, und laut ECMA 402 gibt es bis zu drei Währungsteile (currencyCode, currencyPrefix, currencySuffix), wobei nicht klar ist, ob davon mehr als ein Teil auftreten kann.
percentSign
Das Prozentzeichen, wenn die Formatierung als Prozentwert erfolgt
unit
Die Einheitenangabe für den Formatierungsstil "unit". Laut ECMA 402 gibt es bis zu zwei Teile (unitPrefix und unitSuffix).
infinity, nan
Falls Sie versehentlich die JavaScript-Werte Infinity oder NaN formatieren, erhalten Sie diesen Typ.

Das Verbindungszeichen zwischen den Zahlen ist im "de"- oder "en"-Locale ein Halbgeviertstrich (Gedankenstrich, Unicode-Zeichen – oder &ndash), kein einfaches Bindestrichminus. Das "zh"-Locale (chinesisch) verwendet hingegen das Bindestrichminus (-)

Die source-Angabe besagt, aus welchem Teil des Methodenaufrufs der Wert stammt. Es gibt startRange und endRange für den von- und bis-Parameter, sowie shared für Ausgabefragmente, die keinem der beiden zugeordnet werden können.