diff --git a/language/types/float.xml b/language/types/float.xml
index 5d0a30c867..3fd2946641 100644
--- a/language/types/float.xml
+++ b/language/types/float.xml
@@ -44,20 +44,25 @@ EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
Floating point precision
- It is typical that simple decimal fractions like 0.1 or
- 0.7 cannot be converted into their internal binary
+ Floating point numbers have limited precision. Although it depends on the
+ system, PHP typically uses the IEEE 754 double precision format, which will
+ give a maximum relative error due to rounding in the order of 1.11e-16.
+ Non elementary arithmetic operations may give larger errors, and, of course,
+ error progragation must be considered when several operations are
+ compounded.
+
+
+
+ Additionally, rational numbers that are exactly representable as floating
+ point numbers in base 10, like 0.1 or
+ 0.7, do not have an exact representation as floating
+ point numbers in base 2, which is used internally, no matter the size of
+ the mantissa. Hence, they cannot be converted into their internal binary
counterparts without a small loss of precision. This can lead to confusing
results: for example, floor((0.1+0.7)*10) will usually
return 7 instead of the expected 8,
since the internal representation will be something like
- 7.9.
-
-
-
- This is due to the fact that it is impossible to express some
- fractions in decimal notation with a finite number of digits. For instance,
- 1/3 in decimal form becomes
- 0.3.
+ 7.9999999999999991118....