[英]Dotnet XPathNavigator XPath Evaluate Incorrect Result
我正在尝试评估xpath表达式,但结果不正确。 看一下下面的xml和表达式。 数学(对我而言)似乎计算结果应为:
500000 *(1 + -.80)
500000 *(.2)
我相信结果应该是100000(当我输入公式时,Excel会认为同一件事)。 当我评估xpath表达式时,我得到了(双精度: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)
XPath 1.0规范以这种方式定义了XSLT / XPath 1.0数字类型 ,ECMAScript / Javascript具有相同的类型和相同的问题,只是对于某些值,没有有限且精确的二进制表示形式,与1/3相同。没有有限和精确的十进制表示形式。 如果可以,或者使用XSLT 1.0,请使用xs:decimal
移至XSLT 2.0,然后确保在输出数字时调用format-number
,以确保将其舍入到所需的精度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.