Nachkommastellen auslesen#2



  • Hio...
    Muha heute bin ich aber im Postmarathon ūüėÉ
    Ich sitze hier, wie so oft wenn jemand hier fragt, vor einem Problem.
    Ich brauche die Nachkommastellen eines floates(oder double).
    Da dachte ich mir, ohne gleich eine komplizierte Funktion (wieich sie hier schonmal gefunden hatte) zu schreiben/nehmen die das ganze in einen String umwandelt oder eine zusätzlichen Header zu verwenden: schreibse deine eigene Funktion.
    Die sieht so aus:

    int CntComma;
        float test = 4252.1001;
        const float maxFloat = 3.4e+38; //ok, so ne Zahl zu verwenden isn bissel krass, aber ich denke ich werde nie eine so gro√üe Zahl √ľbergeben und wollt mit der Funktion wirklich alles abdecken
        for (int i = 0;i <= maxFloat; i++)
        {
            int temp;
            test = test*10;
            temp = test;
            CntComma++;
            if (temp == test) break;
        }
    

    Durch das Malnehmen mit 10 wird das Komma verschoben, wenn das Ganze gleich eines integers (der ja rundet) ist :break; CntComma zählt dann die Nachkommastellen.
    Hab das Ganze nun schon mit vielen Möglichkeiten durchprobiert, alles ging, bis auf die Möglichkeit die ich oben als FLoatwert gewählt habe. Das Problem ist: der FLoat rundet eine solche Zahl von sich aus schon und so hab ich nur eine Kommstelle.

    Einer ne Idee, ohne dass ich den Floatwert in einen String packe und den dann wie ein Array durchgehe?

    p.s. hatte so nen thread schonmal aufgemacht und bisher die dortdrin genannte Funktion benutzt nur wollt ich die jetzt selber schreiben ūüėÉ



  • Wenn ich Dich richtig verstehe, m√∂chtest Du die Anzahl der Nachkommastellen einer Zahl in Dezimaldarstellung bestimmen. Wozu soll das gut sein? Was soll denn bei z.B. bei 1/3 rauskommen?

    Beachte bitte, dass ein Wert wie 0,1 (dezimal) im Bin√§r-System als 0,0 0011 0011 0011 .. usw. dargestellt wird. Die Ausgabe der Zahl als '0.1' geht nur √ľber Runden.

    Gruß
    Werner



  • Sorry aber die zu l√∂sende Aufgabe ist total sinnfrei.
    Jede Fließkommazahl hat theoretisch unendlich viele Nachkommastellen ( 1.0000000...)
    Und welche Aussage kannst du Anhand der Anzahl der Nachkommasetllen √ľber die Zahl treffen?

    Also ich w√ľrde die Zahl in nen String packen, bis zum Komma abschneiden und dann die L√§nge isses.
    Aber wie gesagt, total sinnfrei.

    Verge



  • 129831928.241202

    in string umwandeln
    länge von string ermitteln
    solange(a[i] != .)
    {
    neuer string
    }

    länge vom neuen string

    ergebnis = alte stringlänge - neue

    solange (b[ergebnis+1])
    string nachkommestellen



  • schau dir doch mal die Klasse numeric_limits an. da gibts unz√§hlige methoden die dir alles m√∂gliche √ľber die jeweilige zahl ausspucken.


Log in to reply