RE: [xsl] basic math functions: problem with substraction result (newbie question)

Subject: RE: [xsl] basic math functions: problem with substraction result (newbie question)
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 13 Aug 2003 12:07:48 +0100
This problem occurs because 2.4 and 0.2 cannot be represented precisely
as IEEE floating point numbers, so you get rounding errors. The solution
is to display the result using format-number, which rounds it to the
required precision, for example

format-number(2.4 - 0.2, "#0.00")

will display the result to two decimal places.

Michael Kay

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Nicolas Stern
> Sent: 13 August 2003 10:09
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] basic math functions: problem with 
> substraction result (newbie question)
> 
> 
> Hi - many thanks in advance for any help on the following problem:
> 
> Can anyone explain me the following behavior with basic math 
> functions ?
> 
> I'm doing additions and substractions in an xsl sheet, and 
> don't get the 
> expected results.
> 
> my xml file: (dummy.xml)
> -------------------------------
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" href="t2.xslt"?>
> <ROWSET>
>     <ROW>dummy</ROW>
> </ROWSET>
> -------------------------------
> the stylesheet: (t2.xslt)
> -------------------------------
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> <xsl:variable name="var1" select="2.4" />
> <xsl:variable name="var2" select="0.2" />
> <xsl:template match="/">
>   <html>
>       <ul>
>           <li><xsl:value-of select="$var1 + $var2" /></li>
>           <li><xsl:value-of select="$var1 - $var2" /></li>
>       </ul>
>     <hr />
> 
>   </html>
> </xsl:template>
> </xsl:stylesheet>
> -------------------------------
> the output: (using msxsl dummy.xml t2.xslt
> -------------------------------
> < h t m l >
> < u l >
> < l i > 2 . 6 < / l i >
> < l i > 2 . 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 7 < / l i >
> < / u l >
> < h r >
> < / h t m l >
> -------------------------------
> 
> I would need the result of $var1 - $var2 to be = 2.2, as expected
> 
> The behavior is identical when using the parser in xmlspy.
> 
> Any hint ?
> 
> thanks in advance
> 
> Nicolas
> 
> _________________________________________________________________
> MSN Search, le moteur de recherche qui pense comme vous !  
> http://search.fr.msn.ch
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread