22.11.2013 Aufrufe

Programmierstil - IPD Snelting

Programmierstil - IPD Snelting

Programmierstil - IPD Snelting

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmierstil</strong><br />

Vergleiche bei float und double<br />

Allgemeine Programmertipps<br />

Vorsicht mit Gleitkommazahlen, besonders bei Vergleichen:<br />

class TestFloat {<br />

}<br />

... main(...) {<br />

foo(1.03, 0.42);<br />

}<br />

void foo(float f1, float f2) {<br />

if (f1 - f2 == 0.61)<br />

println("Got it!");<br />

else<br />

println("Fail");<br />

}<br />

Ergebnis: Fail<br />

1.03 − .42 0.6100000000000001<br />

(Gleitkommafehler)<br />

⇒ == greift nicht!<br />

Gefahr bei Berechnungen:<br />

Aufschaukeln der Gleitkommafehler (→ Numerik)<br />

Lösung: Test auf Epsilon-Umgebung:<br />

if (Math.abs(f1 - f2 - 0.61) < 0.000001) ...<br />

Prof. Dr.-Ing. G. <strong>Snelting</strong> (Uni Karlsruhe) c○2008 by <strong>IPD</strong> <strong>Snelting</strong> – Programmieren WS 2008/2009 28 / 31

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!