double mit 2 Stellen hinter dem Komma
-
Hallo, wie der Titel schon sagt möche ich das bei der Ausgabe eines Doublewertes nur 2 Stellen hinter dem Komma angezeigt werden. Wie mache ich das?
-
Also entweder mit RoundTo, das liefert einen gerundeten Double-Wert, oder mit FloatToStrF, das liefert einen gerundeten und formatierten AnsiString.
-
Wohin willst du ihn denn ausgeben?
(für printf() solltest du dir mal die precision-Angabe der Formatkennungen vornehmen: "printf("%.2f",myfloat);")
-
Ich will es in einem Edit fild ausgeben z.B nicht 9,675435 sondern 9,67. In meinem Fall ist es egal ob er die 3 Zahl nach dem Komma aufrundet oder abrundet, alles was nach der 2. Zahl hinter dem Komma kommt soll einfach abgetrennt werden.
-
float fWert = 1.2345678; EditXYZ->Text = FloatToStrF(fWert, ffFixed, 18, 2);
-
double MyDouble = 10.76543; Edit1->Text = FormatFloat("#0.00",MyDouble);Dann wird auch gleich korrekt gerundet!
gruß gerd
ps: float wird nicht immer korrekt gerundet!
entfernt: .ToDouble();
sonst schreibt er bei 4,90 nur noch 4,9 !
-
gerd01 schrieb:
double MyDouble = 10.76543; Edit1->Text = FormatFloat("#0.00",MyDouble).ToDouble();Dann wird auch gleich korrekt gerundet!
gruß gerd
ps: float wird nicht immer korrekt gerundet!
2 Fragen:
- Macht es wirklich einen Unterschied bei 2 Nachkommastellen, ob man Float oder Double wählt?
- Warum hast du noch .ToDouble() gemacht, FormatFloat liefert doch passend einen AnsiString?EDIT: 2. Frage hat sich eben erledigt

-
bei float werten hatte ich letztens sichtbar z.b. 43,5 aber wenn ich gerechnet hatte mit diesen werten, dann stellte sich heraus, dass es tatsächlich nur 43,49999999999999993 waren. somit total ungenau. seitdem ich denn im forum hier gelesen hatte dass es mit floatwerten ungenau ist, und die funktionen falsch runden habe ich double genommen, und siehe da, alles korrekt.
gruß gerd
-
Bei Double hat mach doch das selbe Problem, die Ursache liegt in der Fließkomma-Arithmetik begründet.
Bei double bekommst du dann 43,49999999999999999999999999999999 statt 43,49999999999999993.
Meines Erachtens verschwinden solche Rundungsfehler erst bei Festkommadarstellung. (EDIT: Festkomma rundet auch, alles mist ;))