Round(FesteGleitkommazahl) ist was anderes als Round(ZahlEinesTyps * ZahlEinesAnderenTyps).
Von welchem Typ sind zahl und multi?
Vor dem Aufruf von Round werden die Zahlen, sofern sie von unterschiedlichem Typ sind, in einen "einheitlichen" Typ gewandelt, das kann dann schonmal schiefgehen bzw. nicht zum erwarteten Ergebnis führen.
Wenn ich sowas auf die unelegante Art mache, dann sieht das ungefähr so aus:
i := Round((zahl + 0.00) * (multi + 0.00));
Dadurch werden ggfls. Integerwerte erstmal in Gleitkomma umgewandelt, damit bei der Berechnung Nachkommastellen erhalten bleiben.
Das kann so funktionieren, muss aber nicht.
Wenns nicht anders geht dann eher sinngemäß sowas:
Delphi-Quellcode:
var i: Int64;
dZahl : Double;
dMulti : Double;
dGes : Double;
begin
[...]
dZahl := zahl;
dMulti := multi;
dGes := dZahl * dMulti;
i := Round(dGes);
[...]
end;
Und nein, das ist nicht elegant