JSTL 中的 BigDecimal 除以 int 或双精度返回整数


<fmt:formatNumber var="instAmount" value="${invoice.amount / offer.getTotalInstallments()}" minFractionDigits="2" />

其中金额BigDecimal JavatotalInstallments int。我尝试将totalInstallments设置为 double但没有任何变化。它返回一个Integer,它的行为就像在Java中除以两个整数时,你会得到一个整数。

我是否遗漏了某些内容或有解决方法?

最简单的解决方案是在控制器/servlet 中进行此计算,并在视图页面上使用结果。我认为计算应该在控制器而不是视图中完成。你可以在 BigDecimal 上使用divide() 方法。

也就是说,如果你确实想在视图中执行此操作,你必须在标签库中定义一个 JSTL 函数,并创建一个静态版本的divide,它接受 BigDecimal 和你正在潜水的 int。

你可以

这样做:

< fmt:parseNumber value="${invoice.amount}" var="a" />
< fmt:parseNumber value="${offer.value)}"  var="b" />
${a/b}

最新更新