Rundungsfehler beim schreiben in MySQL Tabelle



  • Hallo!

    Ich habe ein seltsames Phänomen, ich schreibe eine Variable in eine MySQL-Tabelle und die Zahl wird nicht auf- sondern abgerundet. Ich poste euch mal meinen Code:

    float geldeinwurf = 3311.40
    ADOTable1->FieldByName("Geldeinwurf")->AsCurrency = geldeinwurf;
    

    Wenn ich nun im Debugger den Ausdruck "geldeinwurf" überwache, steht in der Variable 3311.3999023 obwohl von mir 3311.40 eingegeben wurde.

    Wie kann das sein? Seh ich vor lauter Bäumen keinen Wald mehr?

    Über eine Hilfe wär ich euch sehr dankbar.

    Viele Grüße

    Maik



  • Grund ist, daß die Genauigkeit von float aufgrund der internen Darstellung nur etwa sieben oder acht Stellen umfaßt. Jedoch weist du mit

    float geldeinwurf = 3311.40;
    

    ein double-Literal einer float-Variable zu; die Umwandlung führt schnell zu Rundungsfehlern. Das könntest du umgehen, indem du das f-Suffix für float-Literale benutzt.

    Allerdings sollte man aus genau diesem Grunde Geldbeträge nicht in Gleitkommadatentypen speichern. Nimm besser Currency.



  • Das war die Lösung!

    Du hast mir sehr geholfen, vielen Dank!

    Gruß

    Maik


Log in to reply