2016-05-14 99 views
0

我遇到过这种情况,我必须显示双倍的价格,例如$ 75.30,我的后端代码返回$ 75.3。要以经典的美元价格方式(超级脚本十进制值)显示它,我将它们拆分为2并显示。用下面的代码。在jsp中显示精确的2位小数的双精度值

<c:if test="${not empty price }"> 
     <c:set var="displayPrice" value="${fn:split(price, '.')}" /> 
     <sup>$</sup>${displayPrice[0]} 
     <sup> 
      <f:formatNumber minIntegerDigits="2" value="${displayPrice[1]}"/> 
     </sup> 
    </c:if> 

但是在这种情况下发生的是,75.3在显示时变成了75.03。所以我修改了这样的代码。

<c:set var="decimalPrice" 
     value="${displayPrice[1]<10 ?displayPrice[1]*10:displayPrice[1]}" /> 
<f:formatNumber minIntegerDigits="2" value="${decimalPrice}"/> 

这个工作,但价值如45.03美元也显示为45.30美元。

无法更改后端代码,我如何通过任何标记库或最小操作来实现此目的。

回答

0

尝试在格式标记的pattern属性的lib

<f:formatNumber type="number" pattern="0.00" value="${decimalPrice}"/> 

模式0.00意志垫后0•小数点,如果需要,您还可以在模式中使用#如果需要什么可以填补

编辑-1

而不是分裂你可以尝试下面,以提取

<fmt:formatNumber value="${decimalPrice}" maxFractionDigits="2" /> 
<fmt:formatNumber value="${decimalPrice}" maxIntegerDigits="0" /> 
+0

但我需要分裂它,以显示它作为超级脚本和子脚本,这行代码只是不会做。 – PROFESSOR

0

想通了,

<f:formatNumber minFractionDigits="2" value="${price}" var="formattedPrice" /> 

分裂之前格式化它。诀窍了。

相关问题