C# überprufen ob ganze Zahl

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

Markus15 
Beitragsersteller
 28.02.2013, 12:59

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)

0
apachy  28.02.2013, 13:27
@Markus15

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.

0
apachy  28.02.2013, 13:31
@apachy
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.

0

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.


Markus15 
Beitragsersteller
 28.02.2013, 12:34

Das heißt? Was ist eine Exception?

(sry, wie gesagt, hab noch nicht soviel Plan)

0