Meinst Du wirklich, daß eine FPU sich dadurch ändern läßt? Diese Modi sind i.a. in Hardware/Firmware implementiert!siro hat geschrieben:Eigentlich feht dann im SetRoundMode rmNormal oder rmSchool rmMiddle rmDrawing oder wie man das auch nennen mag.
Der IEEE-Standard definiert Euren gewünschten Modus als (hier zunächst der englische Wiki-Eintrag https://en.wikipedia.org/wiki/IEEE_floa ... to_nearest):
und in Deutsch https://de.wikipedia.org/wiki/IEEE_754#RundungenRound to nearest, ties away from zero – rounds to the nearest value; if the number falls midway it is rounded to the nearest value above (for positive numbers) or below (for negative numbers); this is intended as an option for decimal floating point.
Und hier noch die relevanten Abschnitte aus dem IEEE-754/2008-Standard (4.3.1 und 4.3.3)IEEE 754 unterscheidet zunächst zwischen binären Rundungen und binär-dezimalen Rundungen, bei denen geringere Qualitätsforderungen gelten.
Bei binären Rundungen muss zur nächstgelegenen darstellbaren Zahl gerundet werden. Wenn diese nicht eindeutig definiert ist (genau in der Mitte zwischen zwei darstellbaren Zahlen), wird so gerundet, dass das niederwertigste Bit der Mantisse 0 wird. Statistisch wird dabei in 50 % der Fälle auf-, in den anderen 50 % der Fälle abgerundet, so dass die von Knuth beschriebene statistische Drift in längeren Rechnungen vermieden wird.
Eine zu IEEE 754 konforme Implementierung muss drei weitere vom Programmierer einstellbare Rundungen bereitstellen: Rundung gegen +Unendlich (immer aufrunden), Rundung gegen −Unendlich (immer abrunden) und Rundung gegen 0 (Ergebnis immer betragsmäßig verkleinern).
Code: Alles auswählen
― roundTiesToEven, the floating-point number nearest to the infinitely precise result shall be
delivered; if the two nearest floating-point numbers bracketing an unrepresentable infinitely
precise result are equally near, the one with an even least significant digit shall be delivered
― roundTiesToAway, the floating-point number nearest to the infinitely precise result shall be
delivered; if the two nearest floating-point numbers bracketing an unrepresentable infinitely
precise result are equally near, the one with larger magnitude shall be delivered.
...
An implementation of this standard shall provide roundTiesToEven and the three directed rounding
attributes. A decimal format implementation of this standard shall provide roundTiesToAway as a user-
selectable rounding-direction attribute. The rounding attribute roundTiesToAway is not required for a
binary format implementation.