Autor Beitrag
dylip
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 17.12.09 15:08 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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

Gruß Jürgen
Namenlosnameless
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 259
Erhaltene Danke: 6

Windows XP Home Edition, Windos Vista
C#
BeitragVerfasst: Sa 26.12.09 02:58 
Noch einfacher.....

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

_________________
1:<<Life sucks!!>> 2:<< Well okay>> 1: <<Just Yours>> 2:<<Ohmph>>
Mr°Wayne
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 27.12.09 20:42 
Es müsste doch auch so gehen:

ausblenden C#-Quelltext
1:
2:
3:
double zahl = 5.0;
if((zahl % 1.0) == 0)
  return true;
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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:
ausblenden 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.