|
| |

VB.NET - Ein- und Umsteiger| Re: Betrag in Euro / Cent teilen | |  | | Autor: Manfred X | | Datum: 17.04.15 06:20 |
| Die Durchführung von Währungs-Berechnungen ist wirklich sehr diffizil.
Ich verweise in diesem Beitrag nur auf einige der Gesichtspunkte,
die in diesem Zusammenhang relevant sind.
1. Die Wahl des geeigneten Datentyps für Währungsberechnungen
Für die Berechnung mit großen Geld-Beträgen oder für Währungsumrechnungen ist der
normierte IEEE-Datentyp Double wegen der begrenzten Genauigkeit (ca. 15 Stellen)
nur bedingt geeignet.
Empfohlen wird häufig die Verwendung des Datentyps Decimal, der eine höhere Genauigkeit bietet.
Allerdings arbeitet dieser Datentyp relativ langsam und beherrscht nur die Grundrechenarten.
Einen Currency-Datentyp gibt es im Net-Framework nicht.
Die von VB6 übernommene Klasse für die Durchführung von Währungsberechnungen operiert mit Double-Werten.
2. Die Berücksichtigung der Kultureinstellungen beim Parsen von Geldbeträgen
Für die Umwandlung eines Geldbetrags, der durch einen numerischen Datentyp gegeben ist,
stehen Standardformat-Bezeichner zur Verfügung.
Es sind aber auch Formatierungen numerischer Werte durch den Benutzer möglich.
Kulturspezifische Informationen für die Formatierung und die Analyse von numerischen Werten,
stellt dabei die Klasse NumberformatInfo bereit.
Es empfiehlt sich, auch bei der Gliederung von Geldbeträgen in untergeordnete Währungseinheiten,
diese Einstellungen zu beachten.
Die Zahl der zu beachtenden Nachkommastellen ist dabei durch die Eigenschaft CurrencyDecimalDigits festgelegt.
Da 100 Euro-Cent genau einem Euro entsprechen, kann in Deinem Fall der Standardwert dieser
Eigenschaft (2) herangezogen werden.
Das Zeichen (bzw. die Zeichenfolge), das in der Zeichenfolge für die Trennung zwischen dem
Euro-Anteil (vor dem Dezimal-Komma) und Euro-Cent-Anteil (nach dem Dezimal-Komma) zu verwenden ist,
wird durch die Eigenschaft CurrencyDecimalSeparator festgelegt.
Die Position des Vorzeichens bei einem Währungsbetrag ergibt sich aus dem CurrencyPattern-Code.
Bei der Spaltung eines Betrags in zwei Teile ist diese Eigenschaft aber nicht direkt nutzbar.
3. Die Behandlung von negativen Geld-Beträgen
Die gegliederte Darstellung eines Betrages sollte ggf. das Vorzeichen separat behandeln,
da es sich auf beide Angaben (Euro und Euro-Cent) bezieht.
4. Ein kleines Code-Beispiel
Private Sub GetEuroAndCent(ByVal vl As Decimal, _
ByRef Sign As String, _
ByRef Euro As String, ByRef EuroCent As String)
Dim ci As Globalization.CultureInfo = _
Globalization.CultureInfo.CurrentCulture
Dim nf As Globalization.NumberFormatInfo = ci.NumberFormat
Dim vz As Integer = Math.Sign(vl)
vl = Math.Abs(vl)
Dim str As String = vl.ToString("C2", ci)
Dim parts() As String = str.Split(CChar(nf.CurrencyDecimalSeparator))
Sign = nf.NegativeSign
If vz >= 0 Then Sign = nf.PositiveSign
Euro = parts(0)
EuroCent = parts(1).Trim(CChar(nf.CurrencySymbol), " "c)
End Sub5. Ergänzendes
Die FormatCurrency-Methode greift auf die lokalen Windows-Kultureinstellungen zurück
und erlaubt die Parameter-gesteuerte Umwandlung eines Ausdrucks, der einen numerischen Wert ergibt,
in eine Währungsangabe (Zeichenfolge).
Beitrag wurde zuletzt am 17.04.15 um 06:32:23 editiert. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|