So wie Furtbichler habe ich es in der Vergangenheit auch gemacht.
Ich habe das Testprogramm von Bummi auch getestet und da funktioniert es.
Die Daten kommen aber aus einer Firebird
DB und sind TFibFloatFields. Aber ich habe alle Multiplikationen durch Int64 Multipilkationen ersetzt.
Etwa so:
Delphi-Quellcode:
Function Mult3(e1, e2, e3: Extended): Extended;
...
i1 := Round(SimpleRoundTo(e1*1000), 0);
i2 := Round(SimpleRoundTo(e2*1000), 0);
...
Result := i1*i2*i3/1000000000;
end;
Damit berechne ich dann
Delphi-Quellcode:
Erg := Mult3(feld1, feld2, 1.0);
// feld1 ist ein DB Feld mit Float Wert 0.55 und Feld2 mit 18.5;
Erg := SimpleRoundTo(erg, -2);
Und dann wird 10,17 ausgegeben. Warum ist das unterschiedlich zu dem Code von Bummi?