This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: msxml sum() and precision problem
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 19 Sep 2002 15:42:25 +0100
- Subject: RE: [xsl] msxml sum() and precision problem
- Reply-to: xsl-list at lists dot mulberrytech dot com
XPath 1.0 uses floating-point binary arithmetic, not decimal arithmetic,
so there will be rounding errors when results are converted to decimal.
Use format-number() to display the results to the required precision.
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com] On Behalf Of
> Jonas Nordström
> Sent: 19 September 2002 13:03
> To: 'xsl-list@lists.mulberrytech.com'
> Subject: [xsl] msxml sum() and precision problem
>
>
> Something strange is going on. I strolled through the
> archives but couldn't find something similar. Consider the following:
>
> test.xml:
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <?xml-stylesheet type="text/xsl" href="test.xsl"?>
>
> <jonas>
> <name amount="349.03"/>
> <name amount="895.01"/>
> <name amount="841.03"/>
> </jonas>
>
>
> test.xsl:
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:output method="html" version="4.0" encoding="ISO-8859-1"/>
>
> <xsl:template match="/">
>
> <html>
> <meta http-equiv="Content-Type" content="text/html;
> charset=ISO-8859-1" /> <head> </head> <body>
> <xsl:apply-templates select="/jonas/name" /> <br/>
> Sum: <xsl:value-of select="sum(/jonas/name/@amount)" />
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match="/jonas/name">
> <xsl:value-of select="position()"/>: <xsl:value-of
> select="@amount" /><br/> </xsl:template>
>
> </xsl:stylesheet>
>
> and the stunning browser-result:
> 1: 349.03
> 2: 895.01
> 3: 841.03
>
> Sum: 2085.0699999999997
>
> Is there a known precision bug for sum in MSXML (I'm running
> MSXML3 i think).
>
> - Jonas Nordstrom -
> Sigma Exallon AB
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list