On 2012-01-03 20:53:40 +0000, Laurence Rowe wrote: > On 16 December 2011 17:06, Konrad Korzeniowski <kon...@pandur.net> wrote: > > I got following simple xslt file: > > > > <?xml version="1.0" encoding="UTF-8"?> > > > > <xsl:stylesheet version="1.0" > > xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> > > <xsl:template match="/"> > > <xsl:value-of select="number('8.95')"/> > > </xsl:template> > > </xsl:stylesheet> > > > > > > running xsltproc with this xsl against any xml gives: > > 8.949999999999999 > > > > Is this expected? Shouldn't this be 8.85? > > > > Thanks for any explanation. > > Not all decimals may be exactly represented in binary floating point. > See: > http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding
Except that this seems to be a bug here: $ /usr/bin/printf "%a\n" 8.95 0x8.f33333333333333p+0 This is the binary value represented internally. $ /usr/bin/printf "%a\n" 8.949999999999999 0x8.f33333333332eb2p+0 This is quite different! Now, if the XSLT spec says that the value should be rounded *downward* to decimal with a fixed number of decimal digits, this would be correct. But this would be a quite surprising choice. -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <http://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon) _______________________________________________ xslt mailing list, project page http://xmlsoft.org/XSLT/ xslt@gnome.org http://mail.gnome.org/mailman/listinfo/xslt