Der Prozessor und Rechnen - eine endlose Geschichte. Darüber liegt dann nochmal eine Softwareschicht, was es nicht besser macht.
Und Du machst es der Software besonders schwer!
Dieser Code funktioniert - überleg mal, warum ...
| Dim pricea As Currency |
| Dim priceb As Currency |
| pricea = Ccur ("79,99") |
| priceb = Ccur ("239,97") |
| Dim qant As Integer |
| qant = Cint ("3") |
| pricea = pricea * qant |
| |
| Msgbox Cstr (pricea) & Chr$ (10) & Cstr (priceb) |
| |
| If pricea <> priceb Then |
| Msgbox "Fehler vom Gateway: PRICE_DP ist nicht PRICE * QUANTITY " |
| End If |
Double rechnet mit zu vielen Nachkommastellen für diese Aufgabe (und hier zudem falsch). Nimm niemals zu genaue Datentypen, wenn Du es nicht brauchst.
Double = Ccur (value) ist auch keine gute Idee. Bleibe immer bei einem Datentyp (dazu zählt auch Dein Cint) - Du sparst Dir damit eine Menge Ärger.
Und: VERWENDE OPTION DECLARE! Dein Code hat gleich zweimal bei mir gemeckert.
Bernhard
PS: Nimm mal Deinen gegenwärtigen Code und füge eine Messagebox Cstr (pricea - priceb) an - dann siehst Du den Unterschied bzw. den Rechen-/Rundungsfehler in der bisherigen Variante.