Forum: PC-Programmierung C++ double Mantisse runden Richtung 0


von A. R. (redegle)


Lesenswert?

Hallo,

beim Rechnen mit Gleitkommazahlen wird Standardmäßig immer auf die 
nächste Maschinenzahl gerunden.

Also aus 2/3 wird 0.66666666666666663 und nicht 0.66666666666666674.
Weil 0.66666666666666663 am nächste am richtigen Ergebnis liegt.

Gibt es eine Funktion, um die Mantisse einer Gleitkommazahl auf die 
betragsmäßig nächstkleinere Zahl abzurunden?

von Klaus W. (mfgkw)


Lesenswert?

nicht in Standard-C++

von A. R. (redegle)


Lesenswert?

Die eventuelle Lösung muss nicht zum C++ Standard gehören.

von Klaus W. (mfgkw)


Lesenswert?

Dann geht es vielleicht spezifisch für die Umgebung, die hier keiner 
weiß außer dir :-)

Bei den aktuellen Pentium-FPUs kann man m.W. einiges einstellen, was die
zukünftige Rundung betrifft.

Da wirst du dich aber etwas einlesen müssen.
Vielleicht ist das hier ein Anfang:
http://stackoverflow.com/questions/6867693/change-floating-point-rounding-mode

(nur, um dir das googeln zu ersparen)

von A. R. (redegle)


Lesenswert?

Vielen Dank,

das sieht sehr vielversprechend aus. Werde das dem nächst testen.

PS
Wenn ich per google etwas gefunden hätte würde ich hier nicht posten.

von Klaus W. (mfgkw)


Lesenswert?

Das konnte ich mir nicht verkneifen, weil ich den Link auch mit google 
gefunden hatte :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.