Gleitkommazahlen Suffix



  • was können sich dadurch für Nachteile ergeben? Aber das Suffix muss man nur bei Zahlen anhängen, oder auch bei Variablen?



  • Anfänger2 schrieb:

    was können sich dadurch für Nachteile ergeben? Aber das Suffix muss man nur bei Zahlen anhängen, oder auch bei Variablen?

    nur bei zahlen

    nachteile: rundungen, nicht explizite typkonvertierungen -> compiler-warnungen, ...

    bb



  • void foo (float f ) { std::cout << "float";}
    void foo (double d) { std::cout << "double";}
    
    int main ()
    {
     foo ( 2.0f );
     foo ( 2.0 );
    }
    

    Schau mal, was das ausgibt. Macht also durchaus einen Unterschied. 😉

    Das Suffix musst du nur bei Literalen angeben, weil ansonsten der Typ ja bekannt ist.



  • Mach dir als Anfänger keine grossen Gedanken um so etwas. Die Deklaration der Datentypen (hier float) regelt das gewünschte bereits zufriedenstellend. Lasse die Suffixe einfach weg. Mehr brauchst du auch nicht zu wissen.



  • berniebutt schrieb:

    Mach dir als Anfänger keine grossen Gedanken um so etwas. Die Deklaration der Datentypen (hier float) regelt das gewünschte bereits zufriedenstellend. Lasse die Suffixe einfach weg. Mehr brauchst du auch nicht zu wissen.

    Was soll denn jetzt der Mist?! Falsches Programmieren von Anfang an, oder wie?

    Wie man oben sehen kann macht es durchaus einen Unterschied, was man macht und sich das zu merken sollte ja auch nicht all zu schwer sein..

    @Anfänger2
    Machs ruhig von Anfang an richtig, als etwas falschen zu lernen.. 🙄



  • drakon schrieb:

    Was soll denn jetzt der Mist?! Falsches Programmieren von Anfang an, oder wie?

    Wie man oben sehen kann macht es durchaus einen Unterschied, was man macht und sich das zu merken sollte ja auch nicht all zu schwer sein..

    Naja, ob man nun eine float Variable mit einem float Literal oder einem double Literal initialisiert ist nun wirklich ***eißegal.



  • Ich muss sagen, ich benutze es auch nicht, vielleicht wenn es nötig ist, was bisher nicht der Fall war, aber drakon hat Recht. Einem Anfänger einzutrichtern man brauche es nicht zu wissen, ist ziemlich beknackt. Man kann nie zu viel wissen in C++ und an Hand von drakon's Beispiel, sieht man wofür es z.B. notwendig sein kann.



  • drakon schrieb:

    Was soll denn jetzt der Mist?! Falsches Programmieren von Anfang an, oder wie?

    Wo ist da Mist und wo falsches Programmieren, wenn man Datentypen deklariert, initialisiert und dann mit Zuweisungen - evtl. über casting - benutzt? Programmieren heisst aus meiner Sicht, mit dem geringstmöglichehen Aufwand ein stabiles wartungsfreundliches Programm zu schreiben. Das hat sich doch nicht geändert seit den Anfängen der Programmierung mit BASIC, FORTRAN, PASCAL und co.



  • [quote="Tim"]

    drakon schrieb:

    Naja, ob man nun eine float Variable mit einem float Literal oder einem double Literal initialisiert ist nun wirklich ***eißegal.

    Was kostet es denn das gleich mit dem richtigen Typen zu machen? - Ein f anhängen und gut-ist. Ihr wollt mir jetzt nicht sagen, dass es so ein riesen Stress und Aufwand ist float Werte mit dem korrekten Suffix zu versehen? - Bei mir passiert das automatisch..

    Wo ist da Mist und wo falsches Programmieren, wenn man Datentypen deklariert, initialisiert und dann mit Zuweisungen - evtl. über casting - benutzt? Programmieren heisst aus meiner Sicht, mit dem geringstmöglichehen Aufwand ein stabiles wartungsfreundliches Programm zu schreiben.

    Der Mist ist da erstens, dass du einem Anfänger beibringen willst einen falschen Typen zu benutzen. Und wenn er dir jetzt folgt, dann wird er irgendwann genau auf mein gezeigtes Problem stossen.. Zweitens finde ich die gefühlte Aussage: "Wenns kompiliert, ists korrekt" einfach nur Mist. Es geht vieles, auch wenn es völlig falsch ist und das sollte man einem Anfängern nicht gerade beibringen es falsch zu machen..
    Und nochmal. Was verlierst du, wenn du das mit dem korrekten Typen machst? Ist ein "f" da für dich so ein riesen Aufwand?! - Und Was bitteschön sollte an einem f nicht stabil und wartungsfreundlich sein?
    Und von wegen stabil. Sagen wir wir haben ein Stückchen Code, wie das hier:

    struct foo
    {
      void foo ( float f );
    };
    ...
    p.foo ( 2.0 ); // ach, geht ja schon gut..
    

    Na, und was passiert jetzt, wenn der Programmierer von foo noch eine Überladung haben möchte und einiger User halt einfach zu faul waren da ein f zu benutzen?

    Und jetzt komm nicht damit, dass man das in einem solchen Fall mit dem Suffix schreibt. Wen mans nicht konsequent macht, dann macht man es da auch nicht.



  • [quote="drakon"]

    Tim schrieb:

    drakon schrieb:

    Naja, ob man nun eine float Variable mit einem float Literal oder einem double Literal initialisiert ist nun wirklich ***eißegal.

    Was kostet es denn das gleich mit dem richtigen Typen zu machen? - Ein f anhängen und gut-ist. Ihr wollt mir jetzt nicht sagen, dass es so ein riesen Stress und Aufwand ist float Werte mit dem korrekten Suffix zu versehen? - Bei mir passiert das automatisch..

    Ich habe lediglich gesagt, dass es in diesem Fall scheissegal ist. Nicht mehr nicht weniger. Also mach hier keinen Wind...



  • Tim schrieb:

    Ich habe lediglich gesagt, dass es in diesem Fall scheissegal ist. Nicht mehr nicht weniger. Also mach hier keinen Wind...

    Und ich habe lediglich gesagt, dass es weder ein Fehler noch schlechter Programmierstil ist, auf die Literale zu verzichten. Diese sollen doch nur eine andere Schreibweise für sonst festgelegte Datentypen unterstützen. Ich kann ohne diesen Wind gut leben. Das Thema scheint mir abgeschlossen! 😮



  • Ich finde das Beispiel von drakon auch etwas kuenstlich, ist aber berechtigt. Jedoch empfinde ich es nicht als guten Programmierstil: Warum sollte denn die float-Variante eine andere Semantik haben als die double-Variante (in einer high-level Betrachtung).


Anmelden zum Antworten