2009-12-31 135 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