Dotnet XPathNavigator XPath评估不正确的结果

时间:2014-03-09 12:31:19

标签: c# .net xml vb.net xpath

我正在尝试评估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)

1 个答案:

答案 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,以确保它们四舍五入到您想要的精度。