2009-12-31 134 views
1

我想對jsp進行算術運算。我用struts標記庫標籤將整數(長整數)轉換爲jsp中的雙精度值

以下是代碼:

<s:set name="value1" value ="%{0.0}" /> 
    <s:set name="value2" value ="%{0.0}" /> 
    <s:set name="percent" value ="%{0.0}" /> 

    <s:iterator> 
      <s:set name="value1" value ="%{#value1+ someIntegerValue1}" /> 
      <s:set name="value2" value ="%{#value2+ someIntegerValue2}" /> 
    </s:iterator> 

    <s:set name="percent" value ="%{(#value1*100.0)/#value2}" /> 
<fmt:formatNumber type="number" maxFractionDigits="2" minFractionDigits="2" value="${percent}" /> 

現在最後一行始終四捨五入爲整數值

一樣,如果值1 = 3,值2 = 31。然後百分比應等於(3 * 100)/ 31 = 9.68

BUT該死的東西輸出到9.00

<s:set name="percent" value ="%{(3*100.0)/31.0}" /> 
<fmt:formatNumber type="number" maxFractionDigits="2" minFractionDigits="2" value="${percent}" /> 

那麼它正確9.68輸出:S

誰能請幫助?? 現在,當我硬編碼這個表達式

我一直在這個衝擊我很長一段時間,谷歌搜索超過2-3小時沒有得到任何東西。

回答

2

value2應該是double才能使其正常工作。 31是EL中的long,而EL中的31.0double

也就是說,JSP更適合用於演示,而不是一些算術的東西。更乾淨(更少頭痛)的方法是在bean中進行數學運算,然後按照常規的EL方式訪問結果。

+0

以及someIntegerValue1和someIntegerValue2被添加在value1和value2中。並且「沒有」的方式(我一直在抨擊我的頭)來強制或強制jsp exptression從「非浮動」點jsp變量的表達式給予浮點回答。 最後,我不得不改變bean並將someIntegerValue1和someIntegerValue2的類型更改爲Double。那確實解決了它,而且他的答案出來正確。 感謝您的回覆BalusC – Ali 2010-01-01 14:54:44