(Rund um die...) Achtung Cast



  • Hallo,
    ich hab versucht aus einem TEdit Element den String zu nehmen, den Cast auf double durchzuführen und dann den erhaltenen Wert auf float zu casten. Also etwa so

    double myDouble = Edit1->Text.ToDouble();
    float myFloat = (float)myDouble;
    

    Anscheinend gibt es keine Methode String.ToFloat() sonst hätt ich das gleich auf float gecastet.

    Jetzt komm ich zum Punkt:
    gab ich ins Editfeld ,2 ein
    also wollte 0.2 raus haben
    kam etwas in der Richtung 0.2000000294 heraus 😮

    Die Folge war das ich alle floats in double umwandeln durfte.

    Hat jemand etwas ähnliches erlebt oder eine Lösung gefunden wie man diesen Cast-Humbug wieder hinbekommt?



  • hallo,

    schau dir mal die Format-funktion an, in der hilfe gut beschrieben, damit kannst du die ausgaben auf deine wünsche anpassen.
    warum da so etwas rauskam weiß ich auch nicht...

    mfg
    murph



  • Es geht nicht um die Ausgaben, da ich in meinem Programm die float Werte vergleichen wollte, wären 0,2 und 0,200000294 unterschiedliche Zahlenwerte. Das darf natürlich nicht sein.



  • Aufgrund der unvermeidlichen Ungenauigkeit von Computern kannst du Gleitkommazahlen nicht zuverlässig direkt miteinander vergleichen. Habe gerade erst irgendwo eine Abhandlung dazu gelesen, finde es aber auf die Schnelle nicht wieder.

    Auf jeden Fall kein BCB-Problem, verschoben nach "Rund um"


Anmelden zum Antworten