Sum diff problem/bug in XSLT 1.0
floating-point, xslt
Solution
Seems your XSLT processor convert decimal numbers strings to float-point precision numbers before sum;
Well, you can always to use round function and divide by your desired precision or to use format-number function, if available:
<xsl:template match="/">
<xsl:value-of select="round(sum(values/value)) div 100"/><br />
<xsl:value-of select="format-number(sum(values/value), '0.00')"/>
</xsl:template>
Problem
I have this XML data and try and make a sum of it using the XSLT snippet below. Xml ``` <?xml version="1.0" encoding="utf-8"?> <values> <value>159.14</value> <value>-2572.50</value> <value>-2572.50</value> <value>2572.50</value> <value>2572.50</value> <value>-159.14</value> </values> ``` Xslt ``` <?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="sum(values/value)"/> </xsl:template> </xsl:stylesheet> ``` In my world the value should then be 0 but it ends up being -0.0000000000005684341886080801 Run it in Visual Studio and see for yourself. Why? is this happening?