<f:convertNumber>
我遇到了奇怪的问题。当我将maxIntegerDigits设置为15并输入,例如,“1”中的16时,我得到15个“1”的正确数字,但如果我输入“1”中的20,那么得到的数字不是十五“1”但是一个11“1”和4“0”的数字,即111111111110000,我输入的数字越少,数字越少,得到的零越多。为什么呢?
这是代码片段:
<a4j:region>
<h:inputText id="numValue" value="#{MyBean.valueN}">
<a4j:support event="onchange" limitToList="true" ajaxSingle="true" reRender="numValue"/>
<f:convertNumber groupingUsed="false" type="number" maxIntegerDigits="15" minFractionDigits="0"/>
</h:inputText>
</a4j:region>
MyBean.valueN是java.lang.Double。
答案 0 :(得分:2)
这就是IEEE 754浮点数的本质。 double
可以容纳的最大值是1.7976931348623157e308
,具有该整数精度。超出此整数精度的任何内容都将被舍入。
您想要使用java.math.BigDecimal
代替。这样,您的<f:convertNumber>
将按预期工作。