By the way, an excellent ressource to teach those kind of things and check carefully what happens is the sign_mantissa_exponent method:
sage: a = RR(1.1) sage: a 1.10000000000000 sage: a.sign_mantissa_exponent() (1, 4953959590107546, -52) Ciao, Thierry On Tue, Apr 07, 2020 at 05:34:44PM +0200, Marc Mezzarobba wrote: > Hi Simon, > > Simon King wrote: > > According to IEEE 754, the default rounding mode for floating-point > > operations is "round half to even". However, in examples it seems that > > the rounding roule in RR is: "round half away from zero if the total > > number of decimal digits in the result is odd and towards zero if the > > total number of decimal digits of the result is even > > I don't think I'm able to provide a complete answer, but here a a few > elements. > > In principle, I think both RR and RDF should comply with IEEE-754 > rounding rules (in the case of RDF, provided your platform does). In > particular, simply converting a rational number to a certain RealField > should (as far as I understand) round it to that field's precision > according to that field's rounding mode. > > However, the examples you posted to sage-support, e.g., > > sage: round(3.55, ndigits=1) > 3.5 > sage: round(3.555, ndigits=2) > 3.56 > > test much more than that. First, the round() toplevel function is a huge > mess, see #25827 for some observations about it. Second, when you write > 3.55, the preparser does not turn that into code that creates a > RealNumber. An intermediate type called RealLiteral is used, with its > own “features” related to rounding, see in particular #15542. Third, > while any binary floating-point number can in principle be represented > exactly in decimal, Sage sometimes tries to be clever when displaying > floating-point numbers, which can involve rounding them again, see in > particular the docstring of RealNumber.str(). > > Hope this helps... > > -- > Marc > > -- > You received this message because you are subscribed to the Google Groups > "sage-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-devel+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sage-devel/r6i6ip%242sdn%241%40ciao.gmane.io. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/20200407155352.sjrrdjbu5ntj5qna%40metelu.net.