jsf convertNumber的maxIntegerDigits

时间:2011-11-23 13:20:29

标签: jsf richfaces jsf-1.2

<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。

1 个答案:

答案 0 :(得分:2)

这就是IEEE 754浮点数的本质。 double可以容纳的最大值是1.7976931348623157e308,具有该整数精度。超出此整数精度的任何内容都将被舍入。

您想要使用java.math.BigDecimal代替。这样,您的<f:convertNumber>将按预期工作。