Mathematisches Runden
-
out schrieb:
Volkard wollte dich auf den Arm nehmen, runden ist runden

Du Wicht.
http://de.wikipedia.org/wiki/Rundung
-
Nexus schrieb:
Das hilft doch schonmal. Dabei bleiben Probleme wegen der ungebauigkeit von double werten erhalten? der Rückgabewert ist ja dann eine Gleitkommazahl, die unter Umständen nach einem cast zu einer Integer Zahl dann praktisch abgerundet wird? Im Klartext:
round(863.6) = 863.999999999999999871
static_cast<int>(863.999999999999999871) = 863
Oder kann man das umgehen?
EDIT:://
volkard schrieb:
out schrieb:
Volkard wollte dich auf den Arm nehmen, runden ist runden

Du Wicht.
http://de.wikipedia.org/wiki/Rundungdamn... ich dachte genau das würde "mathematisches" runden sein^^ wieder was gelernt
-
Freddy_Kay schrieb:
Nexus schrieb:
Das hilft doch schonmal. Dabei bleiben Probleme wegen der ungebauigkeit von double werten erhalten? der Rückgabewert ist ja dann eine Gleitkommazahl, die unter Umständen nach einem cast zu einer Integer Zahl dann praktisch abgerundet wird? Im Klartext:
round(863.6) = 863.999999999999999871
static_cast<int>(863.999999999999999871) = 863
Oder kann man das umgehen?
Kein Problem.
double kann Ganzzahlen (wenn sie nicht gerade in die Mehrmilliarden gehen) glatt darstellen und da gibt es keine Fehler mehr beim Konvertieren nach int.
Also
round(863.6) = 864.0
-
Alles klar!
Danke hierfür!
-
...
-
out schrieb:
Meinst du etwa
double d = 1.23; int gerundet = d+0.5;Wo liegts Problem?

Zahlen < -0.5 ?
-
volkard schrieb:
double kann Ganzzahlen (wenn sie nicht gerade in die Mehrmilliarden gehen) glatt darstellen und da gibt es keine Fehler mehr beim Konvertieren nach int.
Ergänzung: Falls double eine zu große Ganzzahl nicht darstellen kann, dann ist der Ersatz dafür eine andere Ganzzahl in der Nähe.
Also angenommen, 123456789 könnte nicht exakt dargestellt werden (kann es, ist nur ein Beispiel), dann würde es vielleicht als 123456788, aber niemals als 123456789.001 dargestellt werden.
-
In der Größenordnung, wo der double Ganzzahlen nicht mehr genau darstellen kann, sind Nachkommastellen ohnehin schon lange Geschichte.
-
Kommt drauf an, was man mit "schon lange" meint. Es liegen dazwischen nur 2 binäre Größenordnungen, also ein Faktor von 4.
-
SeppJ schrieb:
In der Größenordnung, wo der double Ganzzahlen nicht mehr genau darstellen kann, sind Nachkommastellen ohnehin schon lange Geschichte.
Schon klar, alter Physiker.
Aber ich gebe zu bedenken, daß es seit heute oberhalb von 2^^53 keine Primzahlen mehr gibt.
scnr