Float in AnsiString
-
Hallo zusammen!
Hab eine Rechenmethode gebastelt die verschiedene Berechnungen durchführt. Anhand des debuggens habe ich z.B. 35.000.000 in meiner Floatvariable stehn. So jetzt möchte ich aber diese Floatzahl in einem Editfeld darstellen. Dazu benutze ich die Methode FloatToStr. Die wandelt mir dann aber die Floatzahl so um: 35.000.000,0164 obwohl der wert 35.000.000 war. Was kann ich machen, dass die Zahl korrekt angezeigt wird!
Danke für eure Hilfe!
-
Mit FloatToStrF die Genauigkeit und Zahl der angezeigten Stellen festlegen.
-
Das würde auch funktionieren, nur kann ich ja nicht 0 als Nachkommastellen eingeben, denn dann würden ja nie Nachkommastellen angezeigt werden. Und wenn ich mehr eingebe zeigt er mir halt trotzdem die Nachkommazeichen an.
Ich müsst halt ne Abfrage starten ob mein Wert mit Komma ist oder ohne und dann die jeweilige Methode aufrufen, aber des wär zu kompliziert.
-
Könntest du uns mal bitte deine Berechnung zeigen, da ich eigentlich keine Probleme mit den Nachkommastellen habe
-
Also ich hab nen Wert den übergeb ich in ne Funktion z.B.
10 multiplizier ich mit nem Faktor 1,5 und dann noch mal mit 1/3 dann bekomm ich meinen Zielwert von 5 zurück als Floatzahl, bis hierhin stimmt alles und die komplette Berechnung. Jetzt sag ich einfachEdit1->Text = FloatToStr(Rundungsfunktion(Variable, Stellen));
(Die Rundungsfunktion verändert den Zielwert nicht!!!)
und im Editfeld würde dann 5,0123 stehn (Weiß jetzt aber nicht ob das stimmt dient nur zur Verdeutlichung, denn mein Prob war ja bei den 35000000,0612).Hoffe das ist jetzt besser erklärt!
-
Hallo javac_coder,
könnte es sein, dass deine Rundungsfunktion das Problem verursacht, da
10*1,5*(1/3) laut meinen mathematischen Kenntnissen 5 ergibt. Ich weiss jetzt nicht so ganz genau, wie du auf 5,0123 kommst.
Außerdem gibt mein PC keine 5,0123 sondern 5
-
Hallo maam!
Die 5 war nur beispielhaft bei dieser Zahl funktionierts bei mir auch, das war nur um euch die Berechnung zu verdeutlichen. Die Rundungsfunktion verursacht kein Problem (wie oben beschrieben), denn ich debugge ja und in meiner Variable steht der genaue Wert drin. (In diesem Fall wäre es ja 5) nur nach dem FloatToStr steht im Editfeld 5,0123 (nochmal bei 5 funktionierts, es dient nur als Beispiel).Anscheinend hat FloatToStr Probleme mit größeren Zahlen, denn ich bekomme z.B. auch einen Wert 9.46E15, nachdem ich aber FloatToStr aufrufe steht im Editfeld 9459999997778899 ... Wenn ich jetzt das ganze mit FloatToStrF umwandle und den ffFixed verwende mit nur 12 Zeichen anzeigen dann werden meine Werte korrekt angezeigt. Bin mir jetzt nur nicht sicher obs jetzt immer richtig angezeigt wird oder auch bei kleineren Zahlen mit weniger wie 12 Stellen Fehler verursacht.