wie rundet man ein float auf z.b 3 stellen?



  • Hi!
    wie rundet man ein float auf z.b 3 stellen hinter dem komma?
    mit den floats soll weitergerechnet werden und das viel und schnell, deshalb währe es doof, wenn rechnungen wie 0.9 / 0.123456789123456789123445 passieren würden...

    gibts dafür nicht irgendwo rundungsfunktionen??

    grüsse
    prokaion



  • prokaion schrieb:

    Hi!
    wie rundet man ein float auf z.b 3 stellen hinter dem komma?
    mit den floats soll weitergerechnet werden und das viel und schnell, deshalb währe es doof, wenn rechnungen wie 0.9 / 0.123456789123456789123445 passieren würden...

    gibts dafür nicht irgendwo rundungsfunktionen??

    grüsse
    prokaion

    Mal ne Idee:
    Du multiplizierst es mit 1000 (3 stellen nach vorne ^^),
    nun wandelst du es in eine integer um (automatische Rundung)
    und dann wieder zurück und durch 1000 dividieren

    Resultat:
    Eine auf 3 Stellen gerundete Float-Zahl 😃

    float wert;
    wert = wert * 1000;
    int temp = (int)wert;
    wert = temp;
    wert = wert / 1000;
    


  • @prokaion: Schau dir mal was über Fließkommaarithmetik an. Dann wirst du sehen, dass die Rechenzeit unabhängig von der Länge der Darstellung ist. Erst Recht, wenn du von der Dezimaldarstellung ausgehst...



  • @Listing: Bei der Umwandlung float->int wird allerdings nicht gerundet, sondern nur die Nachkommastellen abgeschnitten 😉

    @prokaion: float-Werte werden intern in halblogarithmischer Darstellung gespeichert, da hat die Stellenanzahl keinen Einfluß auf die Rechendauer (deine FPU ist für diese Darstellungsform optimiert).



  • Danke an alle!
    hab jetzt auch noch mal ein bisschen geschaut. (allerdings noch nicht erschöpfend!)

    hab rausgefunden, das für meine zwecke nur sogenannte "Denormals" gefährlich wären, also Zahlen, die sehr nahe Null gehen, die Null aber nie erreichen.
    Ich denke allerdings, das das meine Anwendung (noch) nicht betrifft....

    Thanks


Anmelden zum Antworten