Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 12.12.02 |
Fehlerhafte Val()-Funktion Dieser Tipp zeigt wie sich die fehlerhafte Val-Funktion beim Umwandeln von Zahlen in Exponential-Darstellung umgehen lässt. | ||
Autor: Dietmar G. Bayer | Bewertung: | Views: 14.355 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Der Fehler bei der Val-Funktion sollte eigentlich schon bekannt sein:
Val("2%") ' ergibt 2 Val("2.0%") ' ergibt 2 Val("2.1%") ' erzeugt einen "type mismatch" Fehler.
Abhilfe:
Per Replace-Funktion das Prozentzeichen in z.B. "$" wandeln.
Val(Replace("2.1%", "%", "$")) ' ergibt 2.1
Schwerwiegender, und schlechter zu finden ist dagegen ein Zahleneffekt.
Visual Basic kennt 2 Zahlendarstellungen:
- die Normale wie 0.0000004
- die Exponential-Darstellung als 4.03E-8
Hier ist zu beachten, dass beim Einsetzten einer Exponential-Darstellung als Text, Caption, in ListBox und Listview der Wert mit einem Komma geschrieben wird. Außerdem liefert Val() falsche Werte zurück weil Val() die Mantisse falsch auswertet:
Val("4,03E-8")=4 ' Komma-Effekt Val("4.03E-8") ' ergibt 0.0000000403 (Falsch)
Aber:
CDbl("4.03E-8") ' ergibt 0,00000403 (Richtig) CSng("4.03E-8") ' ergibt 4,03E-06 = 0,00000403 (Richtig)
Fazit:
Bei der Wandlung mittels Val wird falsch gerechnet!