Im letzten Blogeintrag haben wir uns angeschaut, wie man mit Währungssymbolen und den regionalen Besonderheiten arbeiten kann.
In diesem Blogeintrag schauen wir uns an, wie man mit einer .NET Methode Werte formatieren und runden kann.
Hier ist das Beispiel aus dem letzten Blogeintrag:
PS C:\> $wert = -12345.67
PS C:\> "{0:C2}" -f $wert
-12.345,67 €
PS C:\> $wert = -12345.67 PS C:\> "{0:C2}" -f $wert -12.345,67 €
Wie ist diese ungewöhnliche Methode „{0:C2}“ –f aufgebaut?
Die erste Zahl ist der Index der Methode, der Buchstabe nach dem Doppelpunkt gibt das Grundformat vor und die Zahl hinter dem Buchstaben legt die Anzahl der zu bearbeitenden Stellen/Nachkommastellen fest.
Folgende Grundformate gibt es:
Grundformat | Symbol | Beispiel | Funktion |
Numeric | N | "{0:N2}" –f 12345.345
12.345,35 |
Formatiert die Zahl mit Tausend-Trennern und rundet auf 2 Nachkommastellen |
Decimal | D | "{0:D8}" –f 1234
00001234 |
Gibt die Zahl 8 stellig aus und füllt bei Bedarf mit Nullen auf |
Currency | C | "{0:C2}" –f 12345.345
12.345,35 € |
Formatiert die Zahl als Währung mit Tausend-Trennern und rundet auf 2 Nachkommastellen |
Percentage | P | "{0:P1}" –f 0.275
27,5% |
Formatiert die Zahl als Prozentwert und rundet auf eine Nachkommastelle |
Hexadecimal | H | "{0:X8}" –f 255
000000FF |
Wandelt die Dezimalzahl in eine Hexadezimalzahl und füllt bei Bedarf mit Nullen auf |
PS C:\> "{0:N2}" –f 12345.345 12.345,35 PS C:\> "{0:D8}" –f 1234 00001234 PS C:\> "{0:C2}" –f 12345.345 12.345,35 € PS C:\> "{0:P1}" –f 0.275 27,5% PS C:\> "{0:X8}" –f 255 000000FF
Auch hier gelten die unterschiedlichen Formatierungsregeln der regionalen Einstellungen.
Die Befehle auf einem US-Englischen Server ausgeführt ergeben anders formatierte Ergebnisse:
PS C:\> "{0:N2}" –f 12345.345
12,345.35
PS C:\> "{0:D8}" –f 1234
00001234
PS C:\> "{0:C2}" –f 12345.345
$12,345.35
PS C:\> "{0:P1}" –f 0.275
27.5 %
PS C:\> "{0:X8}" –f 255
000000FF
PS C:\> "{0:N2}" –f 12345.345 12,345.35 PS C:\> "{0:D8}" –f 1234 00001234 PS C:\> "{0:C2}" –f 12345.345 $12,345.35 PS C:\> "{0:P1}" –f 0.275 27.5 % PS C:\> "{0:X8}" –f 255 000000FF
Was hat es mit den Anführungszeichen und dem Index auf sich? Hier hatte ich selber auch länger gerätselt. Der Index bezieht sich auf die Werte-Position nach dem –f.
Ich kann mehrere Werte in einer Zeile bearbeiten und ausgeben. In der Praxis habe ich es noch nie gebraucht.
Hier trotzdem ein Beispiel:
PS C:\> $volume = 1000
PS C:\> $daten = 123.456
PS C:\> "Datenmenge: {0:N2} GB, das sind {1:P0} Prozent des Volumes" –f $daten,($daten/$volume)
Datenmenge: 123,46 GB, das sind 12 % Prozent des Volumes
PS C:\> $volume = 1000 PS C:\> $daten = 123.456 PS C:\> "Datenmenge: {0:N2} GB, das sind {1:P0} Prozent des Volumes" –f $daten,($daten/$volume) Datenmenge: 123,46 GB, das sind 12 % Prozent des Volumes
Eine weitere Möglichkeit zum ganzzahligen Runden ist die round Methode aus der Mathematischen .NET Bibliothek.
[math]::Round(1.234)
1
PS C:\> [math]::Round(1.234) 1
Überraschend ist folgendes Ergebnis: Wir Runden die Zahlen 3.5 und 4.5 und bekommen bei beiden Rundungen die Zahl 4 als Ergebnis
PS C:\> [math]::Round(3.5)
4
PS C:\> [math]::Round(4.5)
4
PS C:\> [math]::Round(3.5) 4 PS C:\> [math]::Round(4.5) 4
Warum das so ist und wie man das beeinflussen kann steht im nächsten Blogeintrag, der von dem Thema mathematische .NET Methoden handelt.
Was denken Sie?