Werte vom Typ Zahl anzeigen

4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 2004.2 (Geändert)


Vorbemerkung

Wenn Sie nicht für Crossplattform entwickeln, können Sie diesen Abschnitt überspringen.

Im Softwarebereich gehört die Fließkommaberechnung eher in den technologischen als in den mathematischen Bereich. In der Schule lernt man, dass der Wert 1/3 als Dezimalzahl mit einer unbegrenzten Anzahl von Dreiern nach dem Komma dargestellt werden kann. Das weiß ein Rechner dagegen nicht, er muss den Ausdruck bewerten. Das gleiche gilt für den Ausdruck 3 x 1/3. Für den Benutzer ist das Ergebnis 1, der Rechner bewertet den Ausdruck. Je nach verwendetem Rechnertyp wird der Wert 1/3 als Dezimalzahl mit einer begrenzten Anzahl von Dreiern nach dem Komma bewertet. Das ist die Rechnergenauigkeit.

Auf 68k-Macintosh beträgt die Genauigkeit 19 Stellen, 1/3 wird intern also mit 19 Stellen nach dem Komma dargestellt. Unter Windows bzw. auf Power Macintosh beträgt die Genauigkeit 15 Stellen. Im Schrittmodus wird 1/3 auf einem 68k-Macintosh als 0.3333333333333333333, unter Windows bzw. auf Power Macintosh als 0.3333333333333333148 dargestellt. Da die Genauigkeit unter Windows bzw. auf Power Macintosh geringer ist, werden die letzten drei Stellen unterschiedlich dargestellt. Der Ausdruck (1/3)*3 ergibt dagegen auf beiden Rechnern das Ergebnis 1.

In den meisten Fällen ist die Genauigkeit der Fließkommaberechnung sicherlich ausreichend. Bei bestimmten Formularen kann die Genauigkeit Ihres Rechners jedoch für Sie von Bedeutung sein. 

Warum wird 1/3 auf einem 68k-Macintosh anders dargestellt als unter Windows bzw. auf Power Macintosh?

 

Der Grund dafür ist, dass das Betriebssystem auf 68k-Macintosh für Werte vom Typ Zahl 10 bytes (80 bits), unter Windows bzw. auf Power Macintosh 8 bytes (64 bits) belegt. So hat der 68k-Macintosh eine Genauigkeit bis zu 19 Stellen, unter Windows bzw. auf Power Macintosh sind es bis zu 15 Stellen.

Warum gibt der Ausdruck (1/3)*3 auf beiden Rechnern das Ergebnis 1 zurück?

Der Grund hierfür ist, dass ein Rechner nur Näherungsrechnungen durchführen kann. Beim Vergleichen oder Berechnen von Werten behandelt der Rechner Werte vom Typ Zahl nicht als mathematische Objekte, sondern als annähernde Werte. Im o.a. Beispiel ergibt 0,3333... multipliziert mit 3 als Ergebnis 0,9999..., der Unterschied zu 1 ist jedoch so gering, daß der Rechner das Ergebnis als 1 wertet. Weitere Informationen dazu finden Sie in der Beschreibung zum Befehl SET REAL COMPARISON LEVEL.

Bezüglich der Ungenauigkeit sind zwei Fälle zu unterscheiden:

die Art, wie Daten berechnet und verglichen werden,

 die Art, wie sie auf dem Bildschirm oder Drucker dargestellt werden.

Genauigkeit der Fließkommaberechnung mit 4th Dimension

4th Dimension benutzte ursprünglich für die Verwaltung und Speicherung von Werten vom Typ Zahl 10 Byte. Aus Kompatibilitätsgründen mit der Windows- und der Power Macintosh-Version erfolgt die Speicherung auch weiterhin mit 10 Byte. Da die Fließkommaberechnung hier mit 8 Byte durchgeführt wird, konvertiert 4D die Werte vom Typ Zahl von 10 Byte in 8 Byte und umgekehrt. Beim Laden von Datensätzen unter Windows oder auf Power Macintosh, die auf einem 68k-Macintosh gespeichert worden sind, kann demnach eine gewisse Ungenauigkeit entstehen (von 19 auf 15 Stellen). Beim Laden von Datensätzen auf einem 68k-Macintosh, die unter Windows oder auf Power Macintosh gespeichert worden sind, bleibt die Genauigkeit dagegen erhalten. Wenn Sie eine Datenbank auf allen drei Plattformen verwenden, sollten Sie grundsätzlich von einer Genauigkeit bis zu 15 Stellen ausgehen. 

 

Werte vom Typ Zahl mit 4th Dimension darstellen

Da Rechner nur annähernde Werte berechnen, ergeben sich manchmal bizarre Werte vom Typ Zahl.

So gibt der Schrittmodus beispielsweise für die Bewertung des booleschen Ausdrucks

(100-91,025) = 8,975 Wahr zurück. Wird derselbe boolesche Ausdruck dagegen mit Version 6 von 4D unter Windows bzw. auf Power Macintosh bewertet, zeigt der Schrittmodus als Ergebnis 8.974999999999994316 an (die letzten vier Stellen können auf Ihrem Rechner u.U. anders sein).

Die Darstellungsweise ergibt sich beim Vergleich der 15-stelligen Genauigkeit unter Windows bzw. auf Power Macintosh mit der 19-stelligen Genauigkeit des 68k-Macintosh.

Wie bereits erläutert, ist der Wert 8.974999999999994316 GLEICH MIT dem Wert 8.975, da der Unterschied zwischen beiden Werten so gering ist, dass der Rechner sie als gleich ansieht. Deshalb gibt der Schrittmodus beim Vergleichen beider Werte Wahr zurück.

4th Dimension enthält nun einen Rundungsalgoritmus, der das Anzeigen von Werten vom Typ Zahl vereinfacht. Er beeinträchtigt nicht den Wert dieser Zahl an sich, sondern nur die Art der Darstellung. Bei Kommazahlen unter Windows bzw. auf Power Macintosh schneidet der Rundungsalgoritmus standardmäßig die letzten 5 Stellen (von rechts) ab. und prüft, ob die links davon liegenden Stellen aus den Ziffern Null (0) oder Neun (9) bestehen. Liegt eine Null vor, werden alle weiteren führenden Ziffern mit dem Wert 0 gelöscht. Bei einer 9 wird die letzte führende 9 ermittelt und die vorige Ziffer auf den nächsthöheren Wert gerundet.

Mit dem Befehl SET DATABASE PARAMETER können Sie die Rundungsgenauigkeit einstellen, d.h. wieviel Stellen nach dem Komma abgeschnitten werden, bevor getestet wird, ob die Zahl auf- oder abzurunden ist. Standardmäßig wird auf 4 Stellen nach dem Komma gerundet.


4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next