C# überprufen ob ganze Zahl
Guten Tag,
leider bin ich noch nicht so weit mit C#, bin aber am lernen. :)
Und zwar suche ich jetzt einen Befehl, mit der ich überprüfen kann, ob eine Wurzel eine ganze Zahl ergibt.
BSP:
float c, d;
d=sqrt(c);
// c bekam zuvor einen Wert
So, es sollte jetzt überprüft werden, ob das Ergebnis der Wurzel eine ganze Zahl ist (d=sqrt(9) // d=3 <---- ganze Zahl , d=sqrt(10) // d ~3,1622 <--- keine ganze Zahl )
Bitte danke :)
2 Antworten
Hier mal zwei Lösungen:
if (zahl == (int)zahl) {
Console.Write("Es ist eine Ganzzahl");
}
if (zahl%1 == 0) {
Console.Write("Es ist eine Ganzzahl");
}
Bei der konvertierung in einen Int bzw. dem Typcast wird der Wert abgerundet (floor), bzw. die Nachkommastelle fällt weg.
Alternative nutzt du eine Restteilung mit Modulu und der Zahl 1, wenn es ein Rest gibt, dann war es keine Ganzzahl, ist der Rest 0, dann ist es eine.
Du änderst damit den Wert der Variable nicht. (int)zahl gibt dir quasi im aktuellen Kontext ein Integer zurück. Der Wert in Zahl ist weiterhin so vorhanden, wie er vorher war.
Ggf. erklärst du uns dein Problem etwas genauer bzw. was du vor hast, dann lässt sich da leichter eine Lösung finden.
Mit einer Schleife würdest du in dem Fall nur die Ausgaben kriegen, wo eine Ganzzahl rauskommst.
static void Main(string[] args) {
double[] zahlen = new double[10] {1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5};
int maxZahl = zahlen.GetLength(0);
for (int zahl = 0; zahl < maxZahl; zahl++) {
if (zahlen[zahl] == (int)zahlen[zahl]) {
Console.WriteLine(zahlen[zahl]);
}
}
Console.ReadKey();
}
würde also quasi nur 1, 2, 3, 4, 5 ausgeben.
Du könntest versuchen, das Ergebnis der Berechnung in einen Integer zu packen. Wenn das dann eine Exception wirft, ist das Ergebnis keine ganze Zahl.
Das heißt? Was ist eine Exception?
(sry, wie gesagt, hab noch nicht soviel Plan)
Bei
if (zahl == (int)zahl)
Wird aber jede Zahl du einer ganzen Zahl?
So bekomm ich 10 Ausgaben bei einer Schleife mit 10 Werte, da ja die Kommastelle wegfällt. Ich will aber nur die "richtigen" Zahlen ausgegeben haben, wie z.b 3 . (Wurzel aus 9)