11<?xml version =" 1.0" encoding =" utf-8" ?>
22<!-- $Revision$ -->
33<!-- EN-Revision: d494ffa4d9f83b60fe66972ec2c0cf0301513b4a Maintainer: simp Status: ready -->
4- <!-- Reviewed: no -->
4+ <!-- Reviewed: yes -->
5+ <!-- Rev-Revision: 1.0 Reviewer: samesch -->
56<sect1 xml : id =" language.types.float" xmlns : xlink =" http://www.w3.org/1999/xlink" >
67 <title >Gleitkommazahlen</title >
78
89 <para >
9- Gleitkommazahlen (auch als "floats", "doubles" oder "reelle Zahlen" bezeichnet)
10- können anhand einer der folgenden Schreibweisen bezeichnet werden:
10+ Gleitkommazahlen (auch als "floats", "doubles" oder "reelle Zahlen"
11+ bezeichnet) können anhand einer der folgenden Schreibweisen bezeichnet
12+ werden:
1113 </para >
1214
1315 <informalexample >
@@ -38,9 +40,9 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
3840 </informalexample >
3941
4042 <para >
41- Die Größe einer Gleitkommazahl ist plattformabhängig, ein Maximalwert von circa
42- 1.8e308 mit einer Präzision von ungefähr 14 Dezimal-Nachkommastellen ist jedoch
43- ein üblicher Wert (64-Bit IEEE-Format).
43+ Die Größe einer Gleitkommazahl ist plattformabhängig, ein Maximalwert von
44+ circa 1.8e308 mit einer Präzision von ungefähr 14 Dezimal-Nachkommastellen
45+ ist jedoch ein üblicher Wert (64-Bit IEEE-Format).
4446 </para >
4547
4648 <warning xml : id =" warn.float-precision" >
@@ -49,20 +51,21 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
4951 <para >
5052 Gleitkommazahlen haben eine begrenzte Präzision. Obgleich dies vom System
5153 abhängig ist, verwendet PHP üblicherweise das IEEE 754 Double Precision
52- Format, welches einen maximalen relativen Rundungsfehler in einer Größenordnung
53- en 1.11e-16 ergibt. Nicht-Elementare arithmetische Operationen können jedoch
54- größere Fehler hervorgerufen und natürlich muss eine Fortpflanzung des Fehlers
55- berücksichtigt werden, wenn mehrere Operationen zusammengesetzt werden.
54+ Format, welches einen maximalen relativen Rundungsfehler in einer
55+ Größenordnung en 1.11e-16 ergibt. Nicht-Elementare arithmetische
56+ Operationen können jedoch größere Fehler hervorgerufen und natürlich muss
57+ eine Fortpflanzung des Fehlers berücksichtigt werden, wenn mehrere
58+ Operationen zusammengesetzt werden.
5659 </para >
5760
5861 <para >
59- Außerdem gibt es rationale Zahlen die zur Basis 10 als Gleitkommazahlen exakt
60- dargestellt werden können, beispielsweise <literal >0.1</literal > or
62+ Außerdem gibt es rationale Zahlen die zur Basis 10 als Gleitkommazahlen
63+ exakt dargestellt werden können, beispielsweise <literal >0.1</literal > or
6164 <literal >0.7</literal >, für die es aber keine exakte Repräsentation als
62- Gleitkommazahlen zur Basis 2 gibt, welche intern aber unabhängig von der Größe
63- der Mantisse verwendet wird. Daher können Sie nicht ohne einen geringen
64- Präzisionsverlust in ihre intern binäre Darstellung umgewandelt werden.
65- Dies kann zu verwirrenden Ergebnissen führen:
65+ Gleitkommazahlen zur Basis 2 gibt, welche intern aber unabhängig von der
66+ Größe der Mantisse verwendet wird. Daher können Sie nicht ohne einen
67+ geringen Präzisionsverlust in ihre intern binäre Darstellung umgewandelt
68+ werden. Dies kann zu verwirrenden Ergebnissen führen:
6669 <literal >floor((0.1+0.7)*10)</literal > wird üblicherweise
6770 <literal >7</literal > ergeben statt des erwarteten Ergebnisses von
6871 <literal >8</literal >, da die interne Repräsentation etwas ist wie
@@ -71,30 +74,30 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
7174
7275 <para >
7376 Man sollte sich daher niemals bis zur letzten Nachkommastelle auf
74- Gleitkommazahlen verlassen und Gleitkommazahlen niemals direkt auf Gleichheit
75- prüfen. Wenn eine höhere Präzision notwendig ist, stehen die
76- <link linkend =" ref.bc" >Mathematikfunktionen mit beliebiger Präzision</link > und
77- <link linkend =" ref.gmp" >gmp</link >-Funktionen zur Verfügung.
77+ Gleitkommazahlen verlassen und Gleitkommazahlen niemals direkt auf
78+ Gleichheit prüfen. Wenn eine höhere Präzision notwendig ist, stehen die
79+ <link linkend =" ref.bc" >Mathematikfunktionen mit beliebiger Präzision</link >
80+ und die <link linkend =" ref.gmp" >gmp</link >-Funktionen zur Verfügung.
7881 </para >
7982
8083 <para >
8184 Für eine "einfache" Erklärung, steht der Ratgeber
82- <link xlink : href =" &url.floating.point.guide; " >Floating Point Guide</link > zur
83- Verfügung, welche auch den Titel hat "Why don’t my numbers add up?"
85+ <link xlink : href =" &url.floating.point.guide; " >Floating Point Guide</link >
86+ zur Verfügung, welche auch den Titel hat "Why don’t my numbers add up?"
8487 </para >
8588 </warning >
8689
8790 <sect2 xml : id =" language.types.float.casting" >
88- <title >Konvertierung in float</title >
91+ <title >Umwandlung in float</title >
8992
9093 <sect3 xml : id =" language.types.float.casting.from-string" >
9194 <title >Von Strings</title >
9295
9396 <simpara >
9497 Wenn der String
95- <link linkend =" language.types.numeric-strings" >numerisch</link >
96- ist oder numerisch beginnt, wird er in den entsprechenden
97- entsprechenden Gleitkommawert umgewandelt, andernfalls wird er in Null
98+ <link linkend =" language.types.numeric-strings" >numerisch</link > ist oder
99+ numerisch beginnt, wird er in den entsprechenden entsprechenden
100+ Gleitkommawert umgewandelt, andernfalls wird er in Null
98101 (<literal >0</literal >) umgewandelt.
99102 </simpara >
100103 </sect3 >
@@ -103,16 +106,16 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
103106 <title >Von anderen Typen</title >
104107
105108 <para >
106- Werte alle anderen Typen werden konvertiert , indem der Wert zuerst in den
107- Typ <type >int</type > konvertiert wird und dieser anschließend zu
109+ Werte aller anderen Typen werden umgewandelt , indem der Wert zuerst in den
110+ Typ <type >int</type > umgewandelt wird und dieser anschließend zu
108111 <type >float</type >. Weitere Informationen findet man unter
109- <link linkend =" language.types.integer.casting" >Konvertierung in Integer</link >.
112+ <link linkend =" language.types.integer.casting" >Umwandlung in Integer</link >.
110113 </para >
111114
112115 <note >
113116 <para >
114- Da bestimmte Typen ein undefiniertes Verhalten bei der Konvertierung in
115- <type >int</type > haben, ist dies auch bei der Konvertierung in
117+ Da bestimmte Typen ein undefiniertes Verhalten bei der Umwandlung in
118+ <type >int</type > haben, ist dies auch bei der Umwandlung in
116119 <type >float</type > der Fall.
117120 </para >
118121 </note >
@@ -125,20 +128,21 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
125128 <para >
126129 Wie in der obigen Warnung bereits dargestellt, ist es problematisch
127130 Gleitkommazahlen auf Gleichheit zu überprüfen, aufgrund ihrer internen
128- Darstellungsart. Es gibt allerdings Wege diese Vergleiche von
131+ Darstellungsart. Es gibt allerdings Wege, diese Vergleiche von
129132 Gleitkommazahlen anzustellen, die diese Beschränkungen umgehen.
130133 </para >
131134
132135 <para >
133- Um Gleitkommazahlen auf Gleichheit zu prüfen, wird eine obere Schranke
134- für den Rundungsfehler verwendet. Dieser Wert ist bekannt als
135- Maschinengenauigkeit Epsilon bekannt und stellt die kleinste annehmbare
136- Differenz in der Berechnung dar.
136+ Um Gleitkommazahlen auf Gleichheit zu prüfen, wird eine obere Schranke für
137+ den Rundungsfehler verwendet. Dieser Wert ist bekannt als
138+ Maschinengenauigkeit Epsilon und stellt die kleinste annehmbare Differenz
139+ in der Berechnung dar.
137140 </para >
138141
139142 <informalexample >
140143 <simpara >
141- <varname >$a</varname > und <varname >$b</varname > sind bis auf 5 Nachkommastellen gleich.
144+ <varname >$a</varname > und <varname >$b</varname > sind bis auf 5
145+ Nachkommastellen gleich.
142146 </simpara >
143147 <programlisting role =" php" >
144148<![CDATA[
@@ -159,18 +163,18 @@ if(abs($a-$b) < $epsilon) {
159163 <sect2 xml : id =" language.types.float.nan" >
160164 <title >NaN</title >
161165 <para >
162- Einige numerische Operationen können einen Wert ergeben der durch
163- die Konstante <constant >NAN</constant > repräsentiert wird. Dieses Ergebnis
164- repräsentiert einen undefinierten oder nicht darstellbaren Wert in
165- den Fließkommaberechnungen. Jeder strikte oder nicht strikte Vergleich dieses Werts
166- mit jedem beliebigen anderen Wert, inklusive sich selbst, nur nicht &true; ,
167- wird ein Ergebnis von &false; hervorbringen.
166+ Einige numerische Operationen können einen Wert ergeben, der durch die
167+ Konstante <constant >NAN</constant > dargestellt wird. Dieses Ergebnis
168+ stellt einen undefinierten oder nicht darstellbaren Wert in den
169+ Fließkommaberechnungen dar . Jeder strikte oder nicht strikte Vergleich
170+ dieses Werts mit jedem beliebigen anderen Wert, inklusive sich selbst, nur
171+ nicht &true; , wird ein Ergebnis von &false; hervorbringen.
168172 </para >
169173 <para >
170- Da <constant >NAN</constant > eine beliebige Anzahl von anderen Werten darstellen
171- kann, sollte <constant >NAN</constant > nicht mit anderen Werten verglichen werden ,
172- einschließlich sich selbst. Stattdessen sollte zur Prüfung
173- <function >is_nan</function > verwendet werden.
174+ Da <constant >NAN</constant > eine beliebige Anzahl von anderen Werten
175+ darstellen kann, sollte <constant >NAN</constant > nicht mit anderen Werten,
176+ einschließlich sich selbst, verglichen werden . Stattdessen sollte zur
177+ Prüfung <function >is_nan</function > verwendet werden.
174178 </para >
175179 </sect2 >
176180</sect1 >
0 commit comments