我有一个长度 > 20 位的货币字段
例如:99999999999999999999
当我使用时:
<fmt:formatNumber
value="${crudShipmentForm.invoiceVat}"
pattern="###,###,###,###,##0.000" />
我收到了NumberFormatException
?
如何使用 fmt:formatNumber
将此字段格式化为货币?
最佳答案
您已经超出了 long
的最大值,即 9223372036854775807
。
这表明您使用 String
来保存数字,而不是 BigDecimal
或 BigInteger
。它不仅在技术上是错误的类型,而且 EL 还会将其强制为 long
。相应地修复它。
private BigDecimal invoiceVat; // And fix getter/setter as well.
或者,如果由于某些奇怪的原因您确实无法更改类型,请在 getter 中进行更改
public BigDecimal getInvoiceVat() {
return new BigDecimal(invoiceVat);
}
关于java - FMMT :formatNumber throws exception if number has length >= 20 digit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486667/