1

我正在使用 GWT 2.0,当我尝试使用 NumberFormat 格式化 Double 时,结果与预期不符:

NumberFormat format = NumberFormat.getFormat( "#.########" );
Double d = new Double("0.256281093911");
format.format(d);

格式化字符串:0.02147484

如您所见,格式化的值是错误的(这可以在 gwt 展示中看到)。这与我使用的自定义格式(#.########)有关吗?或者这是 GWT 格式化程序中的错误?如果这是一个错误,是否有人找到了解决方法?谢谢。

4

2 回答 2

1

您可以尝试使用 NumberFormat.getDecimalFormat 的链接文本。此外,它可能与浏览器的语言环境和/或十进制分隔符有关。

于 2010-02-04T10:25:20.250 回答
1

Double 通常以二进制格式存储在 java 中。在大多数情况下,使用二进制浮点值不是您想要的 - 二进制和十进制浮点数之间的转换会导致舍入错误。

试试“BigDecimal”,它以 DECIMAL 格式而不是二进制格式存储浮点值。

示例代码:

NumberFormat format = NumberFormat.getFormat("#.########");
format.format(new BigDecimal("0.256281093911"));
于 2011-12-20T16:05:27.010 回答