我正在使用GWT 2.0,当我尝试使用NumberFormat格式化Double时,结果不符合预期:
NumberFormat format = NumberFormat.getFormat( "#.########" );
Double d = new Double("0.256281093911");
format.format(d);
格式化字符串:0.02147484
正如您所看到的,格式化的值是错误的(这可以在gwt展示中看到)。这是否与我正在使用的自定义格式有关(#。########)?或者这是GWT格式化程序中的错误? 如果这是一个错误,有人找到了解决方法吗? 感谢。
答案 0 :(得分:1)
link text 你可以试试NumberFormat.getDecimalFormat。此外,它可能与您的浏览器的区域设置和/或它的小数分隔符有关。
答案 1 :(得分:1)
Double通常以二进制格式存储在java中。在大多数情况下,使用二进制浮点值不是您想要的 - 二进制和十进制浮点数之间的转换会导致舍入错误。
尝试“BigDecimal”,它以DECIMAL格式存储浮点值,而不是二进制格式。
示例代码:
NumberFormat format = NumberFormat.getFormat("#.########");
format.format(new BigDecimal("0.256281093911"));