我目前正在構建一個基於XML的Jasper Report,其中我試圖在成本上添加稅率。將整數轉換爲XPath 1.0中的雙精度值
當我使用sum(//net-total)
來計算總成本時會出現問題。當總和沒有小數位時,它返回整數,我需要一個double。
我試過sum(//net-total) * 1.0
但它似乎沒有工作。
有沒有人有任何想法?
如果我採取了錯誤的做法,請隨時糾正我。
我目前正在構建一個基於XML的Jasper Report,其中我試圖在成本上添加稅率。將整數轉換爲XPath 1.0中的雙精度值
當我使用sum(//net-total)
來計算總成本時會出現問題。當總和沒有小數位時,它返回整數,我需要一個double。
我試過sum(//net-total) * 1.0
但它似乎沒有工作。
有沒有人有任何想法?
如果我採取了錯誤的做法,請隨時糾正我。
的問題是,(對XML)定義的雙重必須有一個小數點(。)
[http://www.w3.org/TR/xmlschema-2/#double]
你應該看看XSLT format-number() Function ..
爲例如format-number(sum(//net-total), "#.00")
將執行一個兩位數字表示..
[編輯]
由於您希望XPATH 1不幸不支持條件表達式和字符串格式,因此無法在標號xpath表達式中執行它...
如果您可以創建節點(總和-total)與//淨總的總和,那麼你可以使用一個小的解決方法
concat(
//sum-total,
substring(concat(//sum-total,".00"), 1, number(not(contains(//sum-total,".")))*1000 )
)
這將增加.00如果沒有。在節點值中。
找到了如何在IReport中設置對象返回類型並在對象上強制執行模式。現在工作正常。
很高興你想出了它..只是爲了它的樂趣我張貼在我的答案上面的一個小訣竅做(它有一個小的要求) – 2010-01-13 13:44:06
我嘗試使用format-number函數,但不幸的是它不存在於XPath 1.0中。 – Gordon 2010-01-13 12:02:14
滴答答題,因爲它也解決了問題。我也在考慮這種方法。 – Gordon 2010-01-13 14:03:26