wieviele float werte gibt es ...
-
Interessante Frage
So könnte man es rausfinden (wird aber sehr langsam sein):int Zaehler = 0; DWORD DWord = 0; float f; while(true) { if(DWord == 0xFFFFFFFF) break; f = *((float*)(&DWord)); if(f >= 0.0f && f <= 1.0f) Zaehler++; DWord++; }
Ergebnis: Es gibt 1.065.353.218 float-Werte zwischen 0 und 1!
@TriPhoenix: Dein Wert war gutAber zwei sind irgendwie weggekommen.
-
und was ist mit exponent gleich null?
und alle den zahlen wie 0.1;1E-1;10E-2 ?
meiner meinung sollte man 1/eps <-float precision (1,19e-7)
da komme ich auf 8,4M mögliche floatwerte zwischen 0 und 1 nur füer die mantisse mit dem exponenten dan auch auf 1 000 000 000 wobei die doppeldarstellungen nicht rausgerechnet sind
-
.b7f7 schrieb:
und alle den zahlen wie 0.1;1E-1;10E-2 ?
sind alles die gleichen Zahlen, Doppeldarstellungen sind nicht unbedingt üblich bei float.
-
.b7f7 schrieb:
und was ist mit exponent gleich null?
Eine Float-Zahl errechnet sich als: (-1)^Sign * 2^(Exponent-127) * 1.Mantisse
Wenn der Exponent 0 ist, so erhältst du nur Zahlen >= 1. Ich schätze mal auf diese Weise kommen dann auch die 2 die ich vergessen habe zustande
-
... * 1.Mantisse
Glaub ich nicht. Die fürende 1 wird mitgespeichert. sonst könnte es ja nicht zu den denormalen Zahlöen kommen, die mir ständig Kopfschmerzen bereiten. Besonders der Pentium 4 mag die absolut nicht.
-
Helium schrieb:
Glaub ich nicht. Die fürende 1 wird mitgespeichert.
Nein. Die erste 1 ist implizit.
-
Helium schrieb:
Die fürende 1 wird mitgespeichert. sonst könnte es ja nicht zu den denormalen Zahlöen kommen, die mir ständig Kopfschmerzen bereiten. Besonders der Pentium 4 mag die absolut nicht.
Nein, bei IEEE-nummervergessen (die der C-Standard vorschreibt) nicht. Sobald der Prozessor die Zahl dann in ein Register liest wird die eins natürlich wieder hinzugefügt, weil das Rechnen damit einfacher wird.
-
Helium schrieb:
... * 1.Mantisse
Glaub ich nicht. Die fürende 1 wird mitgespeichert. sonst könnte es ja nicht zu den denormalen Zahlöen kommen, die mir ständig Kopfschmerzen bereiten. Besonders der Pentium 4 mag die absolut nicht.
Da denormale Zahlen nur bei dem Exponenten 0 (also -128) auftreten, ist das trotzdem eindeutig. Und dann wozu eine 1 speichenr, wenn sie immer sonst da ist.
-
Also Exponent = -127 bedeutet tatsächlich -127, exponent -128 bedeutet in wirklichkeit auch -127 nur das die führende 1 eine 0 ist? Sonst fehlen mir da irgendwie ein paar Zahlen. Kann mich bitte einer aufklären?
-
Helium schrieb:
Also Exponent = -127 bedeutet tatsächlich -127, exponent -128 bedeutet in wirklichkeit auch -127 nur das die führende 1 eine 0 ist? Sonst fehlen mir da irgendwie ein paar Zahlen. Kann mich bitte einer aufklären?
Jo kommt hin.