# Elegant feststellen, ob eine Zahl gerade oder ungerade ist



## KingShango (10 Dezember 2007)

Hallo zusammen,
hier eine dumme Frage:
Wie kann ich am elegantesten feststellen, ob eine Realzahl gerade oder ungerade ist ?
Schonmal vielen Dank für die Hilfe


----------



## MatMer (10 Dezember 2007)

vielleicht sagst du noch den Grund, die CPU und die genaue Vorstellung dabei

ist 2,5 jetzt gerade für dich oder nicht

2,5 ungerade / 2,4 gerade 

oder was genau????


----------



## Ralle (10 Dezember 2007)

Die Suche im Forum nach "ungerade" bringt schon einige Treffer:

http://www.sps-forum.de/showthread.php?t=3511&highlight=ungerade

und

http://www.sps-forum.de/showthread.php?t=5184&highlight=ungerade


----------



## KingShango (10 Dezember 2007)

Es handelt sich um einen ganzzahligen Zähler (1.0, 2.0, 3.0), ich möchte ein bit für gerade Zahlen (2,4,6,8,...) erzeugen.
ich könnte ja mit trunc und mod_di arbeiten, oder gibt es schönere Möglichkeit ?
Schonmal vielen dank


----------



## marlob (10 Dezember 2007)

MatMer schrieb:


> vielleicht sagst du noch den Grund, die CPU und die genaue Vorstellung dabei
> 
> ist 2,5 jetzt gerade für dich oder nicht
> 
> ...


Gerade oder ungerade Zahlen gibt es meines Wissen nach doch nur bei ganzen Zahlen und dann würde ich diese Lösung bevorzugen. Diese Lösung ist auch nicht schlecht, vor allen für Reals. Zu diesen Beiträgen hat Ralle ja auch schon verlinkt


----------



## MatMer (10 Dezember 2007)

marlob schrieb:


> Gerade oder ungerade Zahlen gibt es meines Wissen nach doch nur bei ganzen Zahlen


daher verstehe ich halt nicht das das mit dem Realzahlen extra sagen wollte....

aber hat sich dann ja geklärt


----------



## marlob (10 Dezember 2007)

MatMer schrieb:


> daher verstehe ich halt nicht das das mit dem Realzahlen extra sagen wollte


Naja, laut Definition sind gerade Zahlen, Zahlen die man ohne Rest durch 2 teilen kann. Bei Realzahlen alle mit .0 am ende


----------



## zotos (10 Dezember 2007)

marlob schrieb:


> Naja, laut Definition sind gerade Zahlen, Zahlen die man ohne Rest durch 2 teilen kann. Bei Realzahlen alle mit .0 am ende


Na ja und die vor dem .0 eben eine gerade Ganzzahl stehen haben.


----------



## argv_user (10 Dezember 2007)

KingShango schrieb:


> Es handelt sich um einen ganzzahligen Zähler (1.0, 2.0, 3.0), ich möchte ein bit für gerade Zahlen (2,4,6,8,...) erzeugen.
> ich könnte ja mit trunc und mod_di arbeiten, oder gibt es schönere Möglichkeit ?
> Schonmal vielen dank



Ich würde an Deiner Stelle den "ganzzahligen Zähler"
auch tatsächlich als Ganzzahl verwalten.
Dann kommst Du nämlich um Rundungsfehler herum,
die bei Reals mit großer Wahrscheinlichkeit auftreten.


----------



## marlob (10 Dezember 2007)

zotos schrieb:


> Na ja und die vor dem .0 eben eine gerade Ganzzahl stehen haben.


Genau, aber ich dachte das geht aus dem ersten Satz hervor, den ich geschrieben habe.
Also beide Bedingungen müssen stimmen. War nicht eindeutig genug, wenn man nicht genau liest.


----------



## KingShango (10 Dezember 2007)

.. ich bin ja auch für Ganzzahl, ist aber hier so ne Generalentscheidung, nur Real zu verwenden. 
Danke für die Hilfe.


----------



## uncle_tom (10 Dezember 2007)

Hallo,
Bei Zählern mit Datentyp REAL muss man die Rechengenauigkeit beachten !
Siehe hierzu folgenden Link zur A&D-Webseite Link

Wenn du beispielsweise immer nur den Wert 1.0 hinzuaddierst, dann zählt dein Zähler irgendwann nicht mehr.

Für Zähler sollte man generell den Datentyp DINT bevorzugen.

Mfg
uncle_tom


----------



## KingShango (11 Dezember 2007)

Vielen Dank für die Hilfe, ich werde auf DINT umstellen und das bei unserer Programmierung durchsetzen.
Viele Grüße
Markus


----------

