Abfrage natürliche Zahl?



  • Slin schrieb:

    Zum einen wolltest du glaub ich [cpp]if( x%1 == 0 && x>0)[/cpp] schreiben.
    Und, ja das hatte ich acuh erst angedacht, aber da der ModuloOperator nur Sinn für Ganzzahlige Werte macht, sollte er in C/C++ auch nur für Integers definiert sein. Also wird an der Stelle wo

    x%1
    

    steht automatischen nen cast nach (int) gemacht, bevor der Modulooperator Anwendung findet, was jedoch dazu führt, dass

    x%1 == 0
    

    immer true ergibt. Und das wäre nicht so hilfreich.

    Ja, wollte ich 😃

    Dann ist die Methode mit dem Doppelcast wohl noch die einfachste.



  • groovemaster schrieb:

    Sicher. Sonst noch irgendwelche unsinnigen Vorschläge?

    Wieso? Ist doch ne Idee. Gebe aber zu, das ich die aufgabe falsch verstanden habe...

    Besser?

    double wert;
    if(wert(int)!=wert){
    	//keine ganzzahl
    }else{
    	//ganzzahl
    }
    


  • Du meinst wohl eher

    if (int(wert) != wert)
    


  • hm, alles quatsch ^^

    #include <cmath>
    
    bool IstGanzzahl(double d)
    {
       return d == std::floor(d);
    }
    

    funktioiniert übrigens für den gesamten bereich von double und
    nicht nur für -2^31 bis 2^31-1 (so wie beim int cast)

    das casten von double in int oder einen anderen integertypen ist generell nicht zu empfehlen und würde ich persönlich immer versuchen zu vermeiden.

    MfG
    DDR-RAM



  • xBlackKnightx schrieb:

    n * 0 = 0 <-- was hat das für einen Sinn? immer nur Null?

    Was hat eigentlich Multiplizieren mit 1 für nen Sinn? Kommt ja immer nur der andere Faktor raus. Warum ist das dann erlaubt?

    n / 0 = error <-- wozu error? etwas nützliches sollte man rauskratzen!

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-77147-and-highlight-is-division.html

    0 / n = 0 <-- was hat das für einen Sinn?? immer nur Null?

    Ja warum denn nicht?


Anmelden zum Antworten