Float vergleichen

#1762756
Lesenswert?
• ▲
▼
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
1
  double result = 0;
2
  for( i = 0; i < 10; ++i )
3
    result += 0.1;

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.
Gast #1762761
Lesenswert?
• ▲
▼
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 schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.