f:convertNumber 意外地 increments/decrements 浮点值
f:convertNumber unexpectedly increments/decrements float value
我有一个 float
属性 绑定到 <h:inputText>
。对于长值,它会自动将值转换为指数表示法。我试图使用 <f:convertNumber>
来避免指数值表示。该值可以是下面给出的两个。
- 格式 1:<18 位>
- 格式 2:<14 位可选数字>.<3 位可选小数>
我试过如下使用转换器:
<f:convertNumber pattern="####.###" />
它适用于长达 8 位的数字,但之后该值被转换为一些意外的值。例如,如果我在文本框中给出值 12345678
,它会被正确转换。但是,如果我给出 1234567899
,该值将转换为 1234567936
。如果给值 1234567899.123
,它仍然被转换为 1234567936
.
如果有人能阐明这个问题,让我知道我在做什么,那就太好了。提前致谢。
如果您重视精度,则应使用 java.math.BigDecimal
而不是 float
/double
/java.lang.Float
/java.lang.Double
.
我有一个 float
属性 绑定到 <h:inputText>
。对于长值,它会自动将值转换为指数表示法。我试图使用 <f:convertNumber>
来避免指数值表示。该值可以是下面给出的两个。
- 格式 1:<18 位>
- 格式 2:<14 位可选数字>.<3 位可选小数>
我试过如下使用转换器:
<f:convertNumber pattern="####.###" />
它适用于长达 8 位的数字,但之后该值被转换为一些意外的值。例如,如果我在文本框中给出值 12345678
,它会被正确转换。但是,如果我给出 1234567899
,该值将转换为 1234567936
。如果给值 1234567899.123
,它仍然被转换为 1234567936
.
如果有人能阐明这个问题,让我知道我在做什么,那就太好了。提前致谢。
如果您重视精度,则应使用 java.math.BigDecimal
而不是 float
/double
/java.lang.Float
/java.lang.Double
.