Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高精度小数的GWT数字格式问题_Gwt_String Formatting_Number Formatting - Fatal编程技术网

高精度小数的GWT数字格式问题

高精度小数的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

我使用的是GWT 2.0,当我尝试使用NumberFormat格式化Double时,结果并不像预期的那样:

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。它可以帮助您找到是字符串到双精度的问题,还是仅仅是格式问题。我试过了,但仍然是相同的问题。