Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#5

AW: Unterschiedliche Ergebnisse beim Runden

  Alt 14. Aug 2017, 15:25
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

Geändert von nahpets (14. Aug 2017 um 15:51 Uhr) Grund: Schreibfehler :-(
  Mit Zitat antworten Zitat