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 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