Gast
#1762716
Hallo, wie kann ich in einer if-abrage zwei Float-Zahlen miteinander vergleichen, so dass aber nur die Vorkommastelle verglichen wird? Danke schonmal im Vorraus
|
Anzeige
|
Float vergleichen
Gast
#1762716
Hallo, wie kann ich in einer if-abrage zwei Float-Zahlen miteinander vergleichen, so dass aber nur die Vorkommastelle verglichen wird? Danke schonmal im Vorraus
Gast
#1762722
Indem du vor dem Vergleich in ein C-Buch deiner Wahl schaust und dich über Rundungsmethoden informierst. $ man trunc
Gast
#1762725
Stelle Dir vor, Du müsstest es per Hand machen. Wie würdest Du vorgehen? Runden oder Nachkommastellen abschneiden? Genauso machst Du es dann im Programm.
Gast
#1762732
Habe es jetzt wie folgt gelöst
int vswr_new = vswr;
int vswr_cutout_value_new = vswr_cutout_value;
if (vswr_new >= vswr_cutout_value_new)
ist das geschickt oder eher nicht ?
Nur dann geschickt, wenn "int" gross genug für alle Werte ist. Jens schrieb: > Habe es jetzt wie folgt gelöst > > int vswr_new = vswr; > int vswr_cutout_value_new = vswr_cutout_value; > > if (vswr_new >= vswr_cutout_value_new) > > > > ist das geschickt oder eher nicht ? Das kommt drauf an :-) Floating Point Rechnereien sind nicht so einfach, wie man das gerne hätte oder wie man sich das gemeinhin so vorstellt. Wenn du zb zu einem Ausgangswert von 0, 10 mal 0.1 dazuzählst
dann stehen die Chancen schlecht, dass da exakt 1.0 herauskommt. Wenn in deinem Floating Point System da 1.00000001 herauskommt, dann bist du mit dem einfachen Abschneiden der Nachkommastellen auf der sicheren Seite. int i = result; bekommt den Wert 1. Wenn sich aber da ein Wert von 0.99999999999 ergibt, dann ist der für praktische Zwecke zwar ebenfalls 1, aber er ist einen winzig kleinen Bruchteil kleiner als 1. int j = result; wird zu 0. Tja. Jetzt hast du ein Dilemma: Dem Buchstaben deiner Definition nach, ist der zu 0.999999999 gehörende Integer natürlich 0. Ob dir das aber klar ist, wenn du 10 mal 0.1 aufsummierst und dann 0 heraus kommt, ist eine andere Frage. Und nein: Floating Point Arithmetik hat das Problem, dass man sich jeden einzelnen Fall genau ansehen muss. Es gibt da kein universal gültiges Patentrezept.
Gast
#1762761
Okay... Vielen Dank für euere schnellen Antworten @ Karl heinz Buchegger, danke für die ausfühliche Erklärung, da habe ich in der Tat nicht weiter drüber nach gedacht :)... nunja dann währe eventuell runden doch eher passend.... Danke und Gruß Jens Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|