Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi roundto rundet nicht (richtig) (https://www.delphipraxis.net/96625-roundto-rundet-nicht-richtig.html)

Bastler 27. Jul 2007 19:19


roundto rundet nicht (richtig)
 
N'abend;

Ich habe in meinem Programm folgede Zeile

Delphi-Quellcode:
var ueberlebt:single;
...
ueberlebt:=roundto(secondspan(start,now),-2);
"Uberlebt" wird später durch floattostr in einen String umgewandelt, dieser enthält aber dann 12 od. mehr Nachkommastellen (hab (noch) nicht gezählt). Das verwirrendste dadran ist, das diese Zeile lange Zeit so wie sie hier steht funktioniert hat... :?

Wenn ich statt auf den Exponenten -2 auf 0 runde klappts wieder, auch -1 aber auch nicht... :gruebel:

Hat jemand ne erklärung oder einen Tipp für mich ?

(Hab auch schon probiert durch SetRoundMode den Rundungsmechanismus umzustellen, ändert aber leider nichts...)

dajuhsa 27. Jul 2007 20:05

Re: roundto rundet nicht (richtig)
 
versuchst du damit die kommastellen um 2 zu senken? der parameter gibt an, wie viele stellen übrig bleiben sollen!
12 stellen? single hat doch nur 8 dachte ich :gruebel:

alzaimar 27. Jul 2007 20:19

Re: roundto rundet nicht (richtig)
 
Floats können nicht jede Dezimalzahl genau darstellen. Daher hat man bei einigen Zahlen den Effekt, das eine auf 2 Stellen gerundete Zahl in der Darstellung z.B. 1.230000000001 ist. Das liegt in der Natur der floating point Darstellung.

Bastler 27. Jul 2007 20:53

Re: roundto rundet nicht (richtig)
 
@dajuhsa: Ich weiß, so meinte ich es aucu, ich will auf 2 Nachkommastellen genau runden, sry, falls es falsch rüberkam

@alzaimar: Danke, ich habe jetz eine Variante gefunden, die vllt. nicht perfekt, aber wenigstesn funktionsfähig ist.

Delphi-Quellcode:
var a:integer;
    ueberlebt:single;
...
 
  a:=Millisecondsbetween(start,now);
  ueberlebt:=a*0.001;
  Label1.Caption:=floattostr(roundto(ueberlebt,-2));
klappt, warum auch immer, besser... :gruebel:

//EDIT: Code ergänzt

Corpsman 27. Jul 2007 21:53

Re: roundto rundet nicht (richtig)
 
Schon mal
Delphi-Quellcode:
Label1.caption := floattostrF(ueberlebt,fffixed,7,2);
ausprobiert ?

3_of_8 27. Jul 2007 22:05

Re: roundto rundet nicht (richtig)
 
Delphi-Quellcode:
Label1.caption:=format('%.2f', [ueberlebt]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz