Programmierstil - IPD Snelting
Programmierstil - IPD Snelting
Programmierstil - IPD Snelting
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