wieviele float werte gibt es ...



  • ... zwischen 0 und 1 ? 😕



  • hmm, unendlich ?

    natürlich ist die Frage, ob du die Möglichkeiten von float meinst
    oder allgemein mathematisch.



  • -- Hier stand was falsches. --



  • Dazu müsste man ja die Repräsentation von float kennen. Ich würd mal sagen schätzungsweise ein viertel von allen (Hälfte weg wegen negativem Vorzeichen, nochmal Hälfte weg wegen positivem Exponent.) Normalisierung, NaN und solche Späße nicht mitgerechnet natürlich.



  • Ein n-Bit-Datentyp hat immer 2^n verschiedene Werte. Also hat ein auf x86 üblicher 32-Bit-float 2^32 verschiedene Werte 🙂 Leider nicht ganz wiel durch spezielle Werte noch ein wenig wegfällt, aber grob kann man davon ausgehen.



  • Jo klar, die Frage war aber, wieviele davon zwischen 0 und 1 liegen 😉 Also angenommen, es sind insgesamt 2^32, dann würd ich sagen 2^30, also etwas über 1 Millarde.



  • Zwischen 0 und 1 sind alle Werte, deren Exponent weniger als 0 ist und das Vorzeichen 0. Da hätten wir:

    1 Bit Vorzeichen
    8 Bit Exponent
    23 Bit Mantisse

    Exponent darf höchstens 126 sein dazu, also 2^7-1, mal 2^23 Mantissen, macht 230-223. Das sind dann wohl 1065353216 Stück. Denke ich mal 🙄



  • 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 gut 🙂 Aber 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.


Anmelden zum Antworten