f:convertNumber 意外地 increments/decrements 浮点值

f:convertNumber unexpectedly increments/decrements float value

我有一个 float 属性 绑定到 <h:inputText>。对于长值,它会自动将值转换为指数表示法。我试图使用 <f:convertNumber> 来避免指数值表示。该值可以是下面给出的两个。

我试过如下使用转换器:

<f:convertNumber pattern="####.###" />

它适用于长达 8 位的数字,但之后该值被转换为一些意外的值。例如,如果我在文本框中给出值 12345678,它会被正确转换。但是,如果我给出 1234567899,该值将转换为 1234567936。如果给值 1234567899.123,它仍然被转换为 1234567936.

如果有人能阐明这个问题,让我知道我在做什么,那就太好了。提前致谢。

简而言之:floating-point-gui.de

如果您重视精度,则应使用 java.math.BigDecimal 而不是 float/double/java.lang.Float/java.lang.Double.