Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Formatierte Zahlenausgabe

Geschrieben von: Christian Koller
Kategorie: ASP Grundlagen

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:
Jahr Einnahmen
2000 -456.78
2001 413.20299
2002 2230.64932

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:

Parameter setzen:   -1
Parameter nicht setzen:    0
Parameter wie in Länder-
einstellung des Computers:
  -2

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:
Jahr Einnahmen
2000 -456.78
2001 413.20
2002 2,230.65

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ßbemerkung

Verwandt 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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.