Welche ist die erste Ganzzahl, die ein IEEE 754-Float nicht genau darstellen kann?

Aus Gründen der Klarheit, wenn ich eine Sprache verwende, die IEE 754-Floats implementiert, und ich erkläre:

float f0 = 0.f;
float f1 = 1.f;

... und dann drucke sie wieder aus, ich bekomme 0,0000 und 1,0000 - genau.

Aber IEEE 754 kann nicht alle Zahlen entlang der realen Linie darstellen. Nahe Null sind die "Lücken" klein; Je weiter Sie davon entfernt sind, desto größer werden die Lücken.

Also, meine Frage ist:Für ein IEEE 754-Float ist dies die erste (der Null am nächsten kommende) Ganzzahl, die nicht genau dargestellt werden kann? Ich beschäftige mich im Moment nur wirklich mit 32-Bit-Floats, obwohl ich interessiert bin, die Antwort für 64-Bit zu hören, wenn es jemand gibt!

Ich dachte, das wäre so einfach wie die Berechnung von 2 bits_of_mantissa und addiere 1, wobei bits_of_mantissa gibt an, wie viele Bits der Standard verfügbar macht. Ich habe dies für 32-Bit-Floats auf meinem Computer (MSVC ++, Win64) getan, und es schien trotzdem in Ordnung zu sein.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage