Entwickler-Ecke

Basistechnologien - Überprüfen ob Ganze Zahl


dylip - Do 17.12.09 15:08
Titel: Überprüfen ob Ganze Zahl
Hallo,

das ergebnis einer funktion (einer einbaubedingug) wird als double wert berechnet. wenn diese zahl eine ganze zahl ist, wäre die einbaubedingung erfüllt.

die frage ist jetzt, wie ich überprüfen kann ob dieser doublewert ganzzahlig ist?

gruß dylip


JüTho - Do 17.12.09 15:15

Hallo und :welcome:

Benutze Math.Round und vergleiche. Beachte aber, dass bei double-Werten Vergleiche immer ungenau sind. Siehe z.B. [FAQ] Double und Float: Fehler beim Vergleich und Rundungsfehler [http://www.mycsharp.de/wbb2/thread.php?threadid=64462]

Gruß Jürgen


Namenlosnameless - Sa 26.12.09 02:58

Noch einfacher.....

Wenn eine Zahl eine ganze Zahl ist dann ist die Zahl - dem integer Anteil =0!!!!!


Mr°Wayne - So 27.12.09 20:42

Es müsste doch auch so gehen:


C#-Quelltext
1:
2:
3:
double zahl = 5.0;
if((zahl % 1.0) == 0)
  return true;


JüTho - So 27.12.09 21:21

Hallo Mr.Wayne und :welcome:

Theoretisch mag es so gehen, aber das Rundungsproblem bei double bleibt bestehen.

Nebenbei ist dein Code-Auszug unvollständig bzw. unpraktisch. Wenn du es als Rückgabewert einer Methode vorsehen willst, fehlt der false-Rückgabewert. Außerdem kann man es kürzer schreiben:

C#-Quelltext
1:
return (zahl % 1.0) == 0;                    

Aber das Rundungsproblem gilt auch dann. Jürgen

PS. Solange der Themenstarter sich nicht mehr äußert, ist es ziemlich müßig, sich damit zu befassen.