我有一个 XSL 样式表,我正在使用format-number(xpath,"#,##0")
它来舍入该值。在我的本地计算机上,值 1006.5 舍入为 1007。但是,服务器上的相同样式表将 1006.5 舍入为 1006。
知道为什么吗?
在 XSLT 1.0 中,未指定 format-number() 的舍入规则。(事实上,它们是通过参考 JDK 1.1 规范来定义的,现在很难找到,但我记得很清楚,它的规范非常低)。
因此,不同的 XSLT 1.0 处理器可能表现不同。
XSLT 2.0 定义了舍入规则(尽管我完全忘记了它们是什么)。
我认为这可能是由于不同的 XSLT 1.0 处理器使用不同的舍入方法(半向上与舍入到偶数/银行家的舍入)。这也可能是由于浮点数在不同机器上的表示方式不同。
我对这个问题的回答可能会提供更多详细信息,并让您开始寻找解决方案(解决方案是四舍五入到小数点后两位,但也许您可以看到如何更普遍地应用它)。