Zahl vergleichen
-
Hallo,
wenn ich jetzt z.B. schreibe:
if(punkte[t] == 0) { anz++; }
Warum darf man hier nicht vergleichen? Unser Lehrer hat gesagt so bei Zahlenwerten immer < bzw. <= und > bzw. >= verwenden.
Also warum darf man das nicht?
mfg guest
-
Das haengt mit Darstellung von Fliesskkommazahlen auf der Maschine zusammen.
Hier... scheint das nicht schlecht erklaert zu sein.
*Edit
Bei Integer Datentypen (z.B. short, int, long) tritt dieses Problem allerdings nicht auf und mann darf mit == vergleichen.
-
Ok, danke kannst du mir einen Tippe geben wie man das eventuell mit <, > machen kann?
-
int is_equal(float num, float to) { const float float_epsilon = 0.000001f; return num < to + float_epsilon && num > to - float_epsilon; } int main(void) { float a = 0.001f, b = 0.0009999f; if (is_equal(a, b)) { printf("yay!\n"); } else { printf("-.-\n"); } return 0; }
-
int istGleich(double a,double b) { return !((a>b)-(a<b)); }
-
Ich danke euch!
Aber leider verstehe ich die Codes nicht ganz, kann man den das net einfacher schreiben? - sorry
mfg guest
-
Du musst schon sagen was genau du nicht verstehst.
-
Ok... ich habe eine struktur struct mit float x und float y.
Ich muss nun alle Punkte suchen, wenn y = 0 ist.
if(punkt.y == 0)// darf man hier nicht schreiben, da Fehler auftritt wegen float { anz++; }
Ja und nun ist es schwer für mich die angegeben codes um mein Bsp umzusetzen.
-
Kannst du Deutsch oder Englisch?
Wie wärs mitif( is_equal(punkte[t],0) ) if( istGleich(punkte[t],0) )
-
Danke, würde denn es so auch passen?:
Ich glaub eher net, weil ja wieder das "==" vorkommt? Also man vergleicht.
float find_nullpunkt(punkte the_array[], int len, float b)//b ist dann beim aufruf im hauptprogramm 0 und len ist 100. { int t; int anz=0; for(t=0; t<len; t++) { if(the_array[t].y == (the_array[t].y < b) - (the_array[t].y > b)) { anz++; } } return(anz); }
-
Ägypten?
-
Ok, das obere ist falsch:
if(!(the_array[t].y > 0) - (the_array[t].y < 0)) { anz++; }
So müsste es stimmen? Ich danke nochmals.
-
Wutz schrieb:
Ägypten?
Ach so, Sie meinen den Vornamen. Ne, den weiß ich nicht.
:xmas1: