Rubrik: Variablen/Strings | VB-Versionen: VB.NET | 18.04.07 |
Formatierung bei der Double.ToString-Methode Aufhebung des Standardverhaltens der Double.ToString-Formatierung | ||
Autor: Manfred Bohn | Bewertung: | Views: 10.402 |
ohne Homepage | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
In VB 2005 stellen Variablen des Datentyps "Double" die "ToString"-Methode zur Verfügung, durch die der aktuelle Variableninhalt in einen String umgewandelt werden kann.
Verwendet man die ToString-Metode ohne Formatanweisung, wird automatisch auf die interne Standardeinstellung zurückgegriffen - und durch die wird ein DOUBLE-Wert auf 15 Stellen Genauigkeit angegeben.
Es ist deshalb möglich, dass beim Vergleich von 2 Double-Variablen a, b der numerische Vergleichs-Ausdruck a = b 'false' ergibt, während der String-Vergleich a.ToString = b.ToString 'true'
liefert.
Der numerische Vergleich bezieht nämlich bis zu 17 Stellen ein.
Will man bei beiden Vergleichen ein konsistentes Ergebnis erzielen, ist eine explizite Formatanweisung erforderlich, die die Genauigkeit der Stringdarstellung auf 17 Stellen erhöht:
a.ToString("g17") = b.ToString("g17")
Selbstverständlich können auch beliebige andere benutzerdefinierte Formate verwendet werden, je nach Bedarf.
(Prinzipiell sollte man allerdings Double-Variablen nicht direkt auf Identität überprüfen, sondern stets einen Vergleich der Variablen-Differenz durchführen - unter Verwendung eines ausprägungs-abhängigen Epsilon-Schwellenwertes.)