Java 在XPath 1.0中将整数强制转换为双精度

Java 在XPath 1.0中将整数强制转换为双精度,java,xml,xpath,casting,jasper-reports,Java,Xml,Xpath,Casting,Jasper Reports,我目前正在构建一个基于XML的Jasper报告,在该报告中,我试图在成本中添加一个税收百分比 当我使用sum(//net total)来计算总成本时,出现了一个问题。当总和没有小数点时,它返回和整数,我需要一个双精度 我尝试了sum(//net total)*1.0,但似乎不起作用 有人有什么想法吗 如果我采取了错误的方法,请随时纠正我。问题是,根据(XML)的定义,双精度必须有一个小数点(.) [] 你应该看一看 例如,格式数字(总和(//net total),“#.00”)将强制使用两位十进

我目前正在构建一个基于XML的Jasper报告,在该报告中,我试图在成本中添加一个税收百分比

当我使用
sum(//net total)
来计算总成本时,出现了一个问题。当总和没有小数点时,它返回和整数,我需要一个双精度

我尝试了
sum(//net total)*1.0
,但似乎不起作用

有人有什么想法吗


如果我采取了错误的方法,请随时纠正我。

问题是,根据(XML)的定义,双精度必须有一个小数点(.)

[]

你应该看一看

例如,
格式数字(总和(//net total),“#.00”)
将强制使用两位十进制数字表示

[编辑]

不幸的是,XPATH 1不支持条件表达式或字符串格式,因为您希望它用于XPATH 1,所以不可能在单XPATH表达式中实现它

然而,若您可以创建一个节点(总和),其总和为//net total,那个么您可以使用一些变通方法

concat(
//sum-total,
substring( concat(//sum-total,".00"), 1, number( not(contains(//sum-total,".")))*1000  )
)

如果没有,将增加0.00。在节点值中..

找到了如何在IReport中设置对象返回类型并在对象上强制执行模式。现在工作正常。

我尝试使用format number函数,但不幸的是,它在XPath 1.0中不存在。勾选了答案,因为它也解决了问题。我也在考虑这个方法。很高兴你能想到。。只是为了好玩,我在上面的回答中发布了一个小技巧(有一个小要求)