Float to Double



  • Tim schrieb:

    sdfgh schrieb:

    aber den unterschied find ich schon sehr groß, zeig mal den code.

    Wieso groß? Das sind 8 signifikante Stellen. Viel mehr kann man von float nicht erwarten, und durch die Typumwandlung nach double wird das ja nicht genauer. Ganz normaler IEEE754-Effekt.

    stimmt, hat irgenwie schlimmer ausgeschaut, als es ist.

    Thes-One schrieb:

    Aber wie könnte ich das Problem umgehen??

    Wenn du den Effekt nicht haben willst, dann darfst du nicht mit float/double arbeiten, sondern musst dir selber was bauen, z.B. mit mehreren long variablen oder so.



  • Reicht es nicht aus wenn ich anstatt Float Double benutze??
    Nur dann hab ich Probleme mit dem einlesen, da der Wert einfach riesig ist pbwohl ich nur 3.5 eingegeben habe!



  • double löst das "Problem" (ich würde es eher Eigenschaft nennen) von Fließkommazahlen nicht, es verschiebt es höchstens.

    #include <stdio.h>
    
    int main (void) {
    
        printf("float   %1.30f\n", 3.2F );
        printf("double  %1.30f\n", 3.2  );
    
        return 0;
    }
    


  • Was das ganze verursacht ist mir jetzt klar aber wie ich die "Eigenschaft" umgehen kann weiß ich net!

    Einen Double Wert einlesen klappt irgendwie garnicht!
    Float Wert in Double speichern geht auch nicht!

    Wie dann??
    *BITTE HILFE*



  • Thes-One schrieb:

    Einen Double Wert einlesen klappt irgendwie garnicht!
    Float Wert in Double speichern geht auch nicht!

    Um double-Werte einzulesen, darfst du natürlich nicht die Formatkennung für float verwenden - richtig wäre %lf (ich liebe scanf/printf :D)



  • Ich habe das mit dem If Probiert aber er leißt trotzdem einfach einen Wert ein!
    Nur zur Kontrolle ::> If ( Das ist ein Großes i und ein f)????



  • Thes-One schrieb:

    Nur zur Kontrolle ::> If ( Das ist ein Großes i und ein f)????

    Knapp vorbei - das sollte eigentlich lf (kleines L und kleines F) sein.



  • Ohhh!
    Thx!

    Heißt das dann soviel wie long float???

    Aber mit dem "lf" wird die Näherung des eingegebenen Wertes schon sichtbar, aber es ist immer noch nicht der Wert der Eingegeben wurde!

    Eingabe 3.2

    mit lf sieht der Wert so aus --> 3.2000000000000002

    im Array --> 3.2000000000000002

    Wo kommt die 2 her??



  • die 2 dort hinten ist systembedingt - der Computer kann den Wert 3.2 nicht exakt als Binärwert speichern, deswegen wird er am Ende ein wenig gerundet (genausowenig, wie du 1/3 exakt in Dezimalform schreiben kannst).



  • Ah ok!

    THX


Anmelden zum Antworten