y = 35675640
z = (1682*x*y4 + 3*x3 + 29*x*y2 - 2*x5 + 832)
/ 107751
Für die folgenden Untersuchungen vereinfachen wir diese Gleichung zu:
z = (A + B + C - D + 832) / 107751
(0 + 832) / 107751 = 7.72150605916976929E-03.
Beide Resultate sind falsch!
Das zweite Resultat entspricht abgesehen von der Stellenanzahl
dem Ergebnis des Taschenrechners.
Es zeigt sich, daß mit einfacher Genauigkeit kein richtiges
Ergebnis erzielt werden kann.
|
Besondere Kritik verdient dabei die Tatsache, daß das System den User nicht warnt - und selbst bei einem Overflow die Gesamtrechnung nicht abbricht. Ein Abbruch erfolgt nur, wenn das Ergebnis der jeweils abgeschlossenen Berechnung die maximale Grenze von 3.40282E+38 überschreitet. Achtung: Die in der Rechnung verdeckt auftretenden Overflows werden ignoriert, wenn das Endergebnis im darstellbaren Zahlenbereich liegt ! |
| Glieder des Zählers | Resultat |
|---|---|
| A+B+C | 5.23460426438903577E+41 |
| D | 5.23460426438903577E+41 |
Endresultat: (0 + 832) / 107751 = 7.72150606490891022E-03
Das Resultat ist falsch!
Das Resultat entspricht abgesehen von der Stellenanzahl dem
Ergebnis des Taschenrechners.
Es zeigt sich, daß C auch bei double precision kein richtiges
Ergebnis zu liefern imstande ist !