Double -> Float (exakt)



  • Hallo zusammen!

    (Ja, ich habe bereits einige Threads gelesen, aber nicht das Passende gefunden 😉 )

    Ich arbeite dem C++ Builder (VCL) 2010.

    Das Problem ist die Gleitkommaungenauigkeit bei der Konvertierung von Double zu Float.
    Ich muss diese Ungenauigkeit irgendwie umgehen, Abweichungen sind leider nicht tolerierbar.

    Eingabe "1,2" (UnicodeString) -> "1,2" (Double) -> "1,19972....." (Float)

    Funktionen a la StrToFloat funktionieren leider nicht, da sie double Werte zurückgeben.

    Any solutions? 😕

    Schöne Grüße!



  • Olli85 schrieb:

    Any solutions? 😕

    int verwenden oder (teure) Bibliothek anschaffen. Oder einfach nur die Ausgabe formatieren. Die Ungenauigkeiten sind nicht zu umgehen. Die Ungenauigkeiten liegen an den Unzulänglichkeiten der Fließkommadatentypen.



  • Hallo

    Ja, wie Joe schon sagte, das Stichwort ist Festkommazahlen, entweder __int64 als Ersatz (intern rechnest du ohne Nachkommastellen, zur Ausgabe verschiebst du dann die Ziffern wieder), Currency oder eine externe Bibliothek.

    bis bald
    akari


Anmelden zum Antworten