Rir*_*iri 4 xslt floating-point
我有这个XML数据,并尝试使用下面的XSLT片段对它进行总结.
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
在我的世界中,该值应为0但最终为-0.0000000000005684341886080801
在Visual Studio中运行它并亲自查看.为什么?这是怎么回事?
似乎你的XSLT处理器在求和之前将十进制数字串转换为浮点精度数;
好吧,你总是可以使用圆函数除以你想要的精度或使用格式数函数,如果可用的话:
<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>
Run Code Online (Sandbox Code Playgroud)