Formatierte Zahlenausgabe
Geschrieben von: Christian Koller Um eine in VBscript errechnete Zahl dem User zu präsentieren, ist es oft im Sinne der Benutzerfreundlichkeit, wenn man diese Zahl in der gewünschten Weise formatiert, um so festzulegen, wieviele Kommastellen angezeigt werden, oder ob ein Trennzeichen alle 3 Zahlen eingefügt wird. Der Sinn dieses Vorgehens wird besonders augenfällig, wenn man sich ein Beispiel wie folgt ansieht: Hochrechnung:
Keine dieser Zahlen ist formatiert, sondern wurde einfach so ausgegeben, wie sie in VBScript errechnet wurden. Welche Funktion(en) bietet aber nun VBScript, um Zahlen zu formatieren und damit lesbarer darzustellen? Zum einen ist da die FormatNumber Funktion, die es erlaubt, die Anzahl der Nachkomma-Stellen festzulegen, und die auch Ziffern in 3er Gruppen zusammenfassen kann. Die Syntax der FormatNumber Funktion ist wie folgt: FormatierteZahl = FormatNumber(Zahl,Nachkommastellen, Führende_Null,Klammern_für_negative_Zahlen,Zahlengruppen) Dabei steht Zahl für die zu formatierende Zahl. Nachkommastellen steht für die Anzahl der Nachkommastellen, die noch angezeigt werden. Der optionale Parameter Führende_Null gibt an, ob bei Bruchzahlen eine Null vor dem Komma angezeigt wird oder nicht. Mit Klammern_für_negative_Zahlen gibt man an, ob negative Zahlen in Klammern ausgegeben werden, wie zum Beispiel (200) statt -200. Der Zahlengruppen Parameter erlaubt es, die Zahlen vor dem Komma in 3er Gruppen zu gruppieren. Für die Parameter Führende_Null,Klammern_für_negative_Zahlen und Zahlengruppen kann man folgende Werte benutzen:
Beim Festlegen einer bestimmten Anzahl von Nachkommastellen wird die letzte Nachkommastelle automatisch auf- oder abgerundet. Um nun also in der Hochrechnungstabelle von vorhin die Zahlen so zu formatieren, daß 2 Nachkommastellen sichtbar sind, eine führende Null bei Bruchzahlen angezeigt wird und negative Zahlen nicht in Klammer stehen, benutzt man die Funktion FormatNumber wie folgt: FormatierteZahl = FormatNumber(Zahl,2,-1,0,-1) Damit sieht die Beispiel-Tabelle wie folgt aus: Hochrechnung:
Damit die Zahlen so gleichmäßig untereinander stehen wurden folgende zwei Tricks angewendet: Die Zahlen wurden in der Tabellenzelle rechtsbündig formatiert - dies ist durch den Zusatz align="right" im <td> Tag zu bewerkstelligen. Weiters wurden die Zahlen mit dem <tt> Tag begrenzt um sie in einer Schrift mit fixer Buchstabenweite darzustellen: <td align="right"><tt> 2,230.65 </tt></td> Wenn sie sich gewundert haben, warum die formatierten Zahlen in der Tabelle einen Punkt als Komma, und eine Beistrich als Gruppierungszeichen haben, so liegt dies daran, daß ich das Beispielscript auf einem amerikanischen Webserver ablaufen habe lassen, der natürlich auch den amerikanischen Regionalcode gesetzt hat. Alle Zahlen werden bei Verwendung der FormatNumber Funktion gemäß den länderspezifischen Einstellungen des Webservers formatiert. Um nun ganz sicher zu gehen, daß die Zahlen gemäß den deutschen Ländereinstellungen formatiert werden, kann man in ASP-Seiten die @LCID Direktive, oder die VBScript Funktion namens SetLocale verwenden: < @LCID=1031 > ... oder SetLocale("de") ... Anzumerken ist, daß sowohl das Setzen der @LCID-Direktive als auch der Aufruf der Funktion SetLocale die Wirkung haben, Zahlen beim Umwandeln in Strings gemäß den deutschen Ländereinstellungen zu formatieren. Hingegen wird beim direkten Ausgeben einer Zahl diese weiterhin mit einem Punkt als Komma dargestellt: <% SetLocale("de") lngA = 27.1287 ' Direktes Ausgeben der Zahl: Response.Write lngA Response.Write "<BR>" & VbCrLf ' Explizite Umwandlung in einen String: Response.Write CStr(lngA) Response.Write "<BR>" & VbCrLf ' Implizite Umwandlung in einen String: Response.Write "" & lngA Response.Write "<BR>" & VbCrLf ' Formatieren mit FormatNumber: Response.Write FormatNumber(lngA) Response.Write "<BR>" & VbCrLf %> Ergebnis: 27.1287 27,1287 27,1287 27,13 Ähnlich wie die Funktion FormatNumber es erlaubt Zahlen zu formatieren, so stellt die VBScript Funktion FormatCurrency die Funktionalität zur Verfügung, um Währungsbeträge formatiert darzustellen. Der Syntax der FormatCurrency Funktion lautet wie folgt: FormatierteWährung = FormatCurrency(Zahl,Nachkommastellen, Führende_Null,Klammern_für_negative_Zahlen,Zahlengruppen) Das Währungssymbol, wie $ oder DM wird dabei wieder von der Ländereinstellung des Servers bestimmt. Die Ländereinstellung kann dabei wieder durch die @LCID Direktive oder die SetLocale Funktion erfolgen, wie im folgenden Beispiel: <% lngA = 27.1287 ' Deutsche Ländereinstellung: SetLocale("de") Response.Write lngA Response.Write "<BR>" & VbCrLf ' Schweizer Ländereinstellung: SetLocale("de-ch") Response.Write lngA Response.Write "<BR>" & VbCrLf ' Österreichische Ländereinstellung: SetLocale("de-at") Response.Write lngA Response.Write "<BR>" & VbCrLf %> Ergebnis: 27,13 DM SFr. 27.13 öS 27,13 Um nun auch DM vor den Betrag zu stellen oder Euro als Währung auszugeben benutzt man am besten selbstgebastelte Funktionen: <% Function FormatDM(Zahl) Dim tmpLocale tmpLocale = SetLocale("de") FormatDM = "DM " & FormatNumber(Zahl,2,-1,0,-1) SetLocale tmpLocale End Function Function FormatEuro(Zahl) Dim tmpLocale tmpLocale = SetLocale("de") FormatEuro = "Euro " & FormatNumber(Zahl,2,-1,0,-1) SetLocale tmpLocale End Function lngA = 0.49 Response.Write FormatDM(lngA) Response.Write "<BR>" & VbCrLf Response.Write FormatEuro(lngA) Response.Write "<BR>" & VbCrLf > Ergebnis: DM 0,49 Euro 0,49 SchlußbemerkungVerwandt zu FormatNumber oder FormatCurrency sind die VBScript Funktionen FormatPercent und FormatDateTime. Doch dies soll Stoff für einen späteren Artikel sein. Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |