Line | |
---|
1 | package eu.hsrw.tr.prog.vl.einfuehrung; |
---|
2 | |
---|
3 | /** |
---|
4 | * Beispiel zur Demonstration der Rundungsfehler bei Gleitkommazahlen |
---|
5 | * @author Thomas Richter |
---|
6 | * |
---|
7 | */ |
---|
8 | public class FloatFehler { |
---|
9 | |
---|
10 | public static void main(String[] args) { |
---|
11 | |
---|
12 | float a = 300.1f; |
---|
13 | float b = 400.1f; |
---|
14 | float c = 200.1f; |
---|
15 | float d = 600.1f; |
---|
16 | float e = 10.0f; |
---|
17 | |
---|
18 | |
---|
19 | // Berechnung mit erwartetem Ergebnis: x == 1.0 |
---|
20 | // erste Klammer: (300.1 * 400.1 + 10.0 - 200.1 * 600.1) |
---|
21 | // = 120070.01 + 10.0 - 120080.01 |
---|
22 | // = 0 |
---|
23 | |
---|
24 | // gesamte Berechnung: |
---|
25 | // 400.1 * 0 * 600.1 + (300.1 - 200.1) / (10.0 * 10.0) |
---|
26 | // = 0 + 100.0 / 100.0 |
---|
27 | // = 1 |
---|
28 | float x = b * (a * b + e - c * d) * d + (a - c) / (e * e); |
---|
29 | |
---|
30 | // tatsächliches Ergebnis: x == 1876.7812 |
---|
31 | System.out.println(x); |
---|
32 | } |
---|
33 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.