我面对这种情况,我必须显示价格是一个双倍,例如75.30美元,我的后端代码返回75.3美元。为了以经典的美元价格方式(超级脚本十进制值)显示它,我将它们分成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美元以上的价格也显示为45.30美元。
无法更改后端代码,如何使用任何标记库或最少的操作来实现此目的。
答案 0 :(得分:0)
尝试格式标记lib
中的pattern
属性
<f:formatNumber type="number" pattern="0.00" value="${decimalPrice}"/>
如果需要,模式0.00
将在小数点后填充0
s,如果不需要填充任何内容,您也可以在模式中使用#
编辑-1
而不是分裂,你可以尝试下面,提取
<fmt:formatNumber value="${decimalPrice}" maxFractionDigits="2" />
<fmt:formatNumber value="${decimalPrice}" maxIntegerDigits="0" />
答案 1 :(得分:0)
想出来,
<f:formatNumber minFractionDigits="2" value="${price}" var="formattedPrice" />
在拆分之前格式化它。诀窍。