我正在尝试评估xpath表达式,但结果不正确。看一下下面的xml和表达式。数学(对我来说)似乎计算结果应为:
500000 *(1 + -.80)
500000 *(。2)
我相信结果应该是100000(当我输入公式时Excel会认为相同的事情)。当我评估我得到的xpath表达式时(Double:99999.999999999971)。我知道有些人会告诉我将(1 + -.8)更改为(.2),但这些计算是提供给我的,我不能改变它们。我挖了一点,评估(1 - .8)给了我0.19999999999999996。这是怎么回事?
<editNode>
<cc_RCONB530 offset="0">500000</cc_RCONB530>
</editNode>
editNode/cc_RCONB530[@offset='0'] * (1 + -.80)
答案 0 :(得分:1)
XPath 1.0规范定义了XSLT/XPath 1.0 number type那种方式,ECMAScript / Javascript具有相同的类型和相同的问题,对于某些值来说简直就是没有有限和精确的二进制表示,与1 /相同3没有有限和精确的十进制表示。如果可以,或者如果您遇到XSLT 1.0,请转到使用xs:decimal
的XSLT 2.0,然后确保在输出数字时调用format-number
,以确保它们四舍五入到您想要的精度。