高精度小数的GWT数字格式问题
我使用的是GWT 2.0,当我尝试使用NumberFormat格式化Double时,结果并不像预期的那样:高精度小数的GWT数字格式问题,gwt,string-formatting,number-formatting,Gwt,String Formatting,Number Formatting,我使用的是GWT 2.0,当我尝试使用NumberFormat格式化Double时,结果并不像预期的那样: NumberFormat format = NumberFormat.getFormat( "#.########" ); Double d = new Double("0.256281093911"); format.format(d); 格式化字符串:0.02147484 正如您看到格式化的值错误(这可以在gwt showcase中看到)。这与我使用的自定义格式有关吗?或者这是GWT
NumberFormat format = NumberFormat.getFormat( "#.########" );
Double d = new Double("0.256281093911");
format.format(d);
格式化字符串:0.02147484
正如您看到格式化的值错误(这可以在gwt showcase中看到)。这与我使用的自定义格式有关吗?或者这是GWT格式化程序中的错误?
如果这是一个bug,是否有人找到了解决方法?
谢谢。
您可以尝试NumberFormat.getDecimalFormat。此外,它可能与浏览器的区域设置和/或十进制分隔符有关。通常在java中,Double是以二进制格式存储的。在大多数情况下,使用二进制浮点值不是您想要的-二进制和十进制浮点值之间的转换会导致舍入错误 试试“BigDecimal”,它以十进制格式而不是二进制格式存储浮点值 示例代码:
NumberFormat format = NumberFormat.getFormat("#.########");
format.format(new BigDecimal("0.256281093911"));
您是否尝试过双d=0.256281093911D代码>。它可以帮助您找到是字符串到双精度的问题,还是仅仅是格式问题。我试过了,但仍然是相同的问题。