diff options
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/tutorial/floatingpoint.rst | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/Doc/tutorial/floatingpoint.rst b/Doc/tutorial/floatingpoint.rst index c9408c9..8816acc 100644 --- a/Doc/tutorial/floatingpoint.rst +++ b/Doc/tutorial/floatingpoint.rst @@ -138,7 +138,39 @@ method's format specifiers in :ref:`formatstrings`. If you are a heavy user of floating point operations you should take a look at the Numerical Python package and many other packages for mathematical and statistical operations supplied by the SciPy project. See <http://scipy.org>. - + +Python provides tools that may help on those rare occasions when you really +*do* want to know the exact value of a float. The +:meth:`float.as_integer_ratio` method expresses the value of a float as a +fraction:: + + >>> x = 3.14159 + >>> x.as_integer_ratio() + (3537115888337719L, 1125899906842624L) + +Since the ratio is exact, it can be used to losslessly recreate the +original value:: + + >>> x == 3537115888337719 / 1125899906842624 + True + +The :meth:`float.hex` method expresses a float in hexadecimal (base +16), again giving the exact value stored by your computer:: + + >>> x.hex() + '0x1.921f9f01b866ep+1' + +This precise hexadecimal representation can be used to reconstruct +the float value exactly:: + + >>> x == float.fromhex('0x1.921f9f01b866ep+1') + True + +Since the representation is exact, it is useful for reliably porting values +across different versions of Python (platform independence) and exchanging +data with other languages that support the same format (such as Java and C99). + + .. _tut-fp-error: Representation Error |