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 wox%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?