Hallo kann mir jemand sagen warum bei dieser Abfrage immer true herauskommt? Ich möchte erreichen das Tist in einem gewissen Intervall liegt. z.B Tsoll = 25.0 dann soll die Bedingung erfüllt sein wenn Tist zwischen 24.99 und 25.01 ist. if((Tist > (Tsoll-0.01)) && (Tist < (Tsoll+0.01))) Hoffe es liegt nicht daran dass die Variablen den Typ float besitzen. Danke Werner
Kann's am && liegen ? Nebenbei, es sind zei additionen und zwei vergleiche. Das geht einfacher. If (abs(Tist-Tsoll)<= 0.01) ist einfache
Hallo! Hab das eben mal getestet, funktioniert doch,vielleicht soltest du mal ein bischen mehr von deinem quellcode posten, der fehler muss wo anders liegen. Die reine If-Abfrage funktioniert. MFG
Vielleicht macht Tist minimale Änderungen von 0.1Kelvin oder so, dann wird der Ausdruck immer true wenn Du nicht Tsoll genau triffs. Ich gleube nicht, daß Du einen Sensor benutzt, der 1/100 Kelvin auflöst. Gute Nacht Detlef
Wenn float: "if(fabs(Tist-Tsoll)<0.1) ... ;" Kürzer, schneller, weniger fehleranfällig.
Der Sensor geht auf 1/5000 genau (wenn man mal vom Rauschen absieht). Die Regelung auf wenige 1/1000 (ginge wahrscheinlich noch besser). So ein blöder Fehler, ich hab lediglich vergessen den Ausgang zurück zu setzen falls die Bedingung nicht erfüllt ist. Habs aber trotzdem umgeschrieben auf if(fabs(Tist-Tsoll)<=0.1), weil es besser lesbar ist. Danke für eure Hilfe Werner
>Der Sensor geht auf 1/5000 genau (wenn man mal vom Rauschen absieht). >Die Regelung auf wenige 1/1000 (ginge wahrscheinlich noch besser). Ist zwar OT, aber du meinst doch sicherlich KiloKelvin, oder? Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.