如何将pe:inputNumber与BigDecimal一起使用



对于精确的大小数,使用pe:inputNumber的正确/最佳方式是什么?我必须接受最多可以有4位小数的货币输入,并且不能四舍五入。现在我正在做以下事情:

public void withdraw(Number amount) {
 BigDecimal d = new BigDecimal(amount.doubleValue());
 // process 
}

<pe:inputNumber roundMethod="S" decimalPlaces="4" symbol="#{applicationBean.currentCurrencySymbol}" required="true" value="#{flowScope.Amount}"/>
<p:commandButton value="Proceed" type="submit" ajax="true" actionListener="#{myBean.withdraw(flowScope.Amount)}"
</p:commandButton>

我担心的是,InputNumber内部会将值转换为Double,这可能会在我将其转换为BigDecimal时导致舍入错误。

PrimeFaces扩展InputNumber不久前已移至PrimeFace。渲染器的源代码是打开的。在那里,您会发现提交的值直接用于实例化BigDecimal:

BigDecimal value = new BigDecimal(submittedValue);

另请参阅带有BigDecimal的示例的showcase:https://www.primefaces.org/showcase/ui/input/inputNumber.xhtml

相关内容

  • 没有找到相关文章

最新更新