1 | initial version |

Slightly simplified, your question is about the following:

```
sage: RealField(150)( RDF(1)/RDF(10) ) # case 1
0.10000000000000000555111512312578270211815834
sage: RealField(150)( RR(1)/RR(10) ) # case 2
0.10000000000000000555111512312578270211815834
```

vs.

```
sage: R = RealField(prec=53, rnd='RNDZ')
sage: RealField(150)( R(1)/R(10) ) # case 3
0.099999999999999991673327315311325946822762489
sage: RealField(150)( RDF(1/10) ) # case 4
0.099999999999999991673327315311325946822762489
```

The first and second cases make guarantees about IEEE floating point behavior and therefore must yield the same answer. The third case explicitly states that it is rounding towards zero, and its to be expected that you get a slightly different answer with different rounding. The fourth case punts to the `__float__`

method of rationals, which is

```
def __float__(self):
"""
Return floating point approximation to ``self`` as a Python float.
OUTPUT: float
EXAMPLES::
sage: (-4/17).__float__()
-0.23529411764705882
sage: float(-4/17)
-0.23529411764705882
"""
return mpq_get_d(self.value)
```

According to the GMP/MPIR docs, `mpq_get_d`

rounds towards zero so you get the same answer as in the third case.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.