Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Java.lang.NumberFormatException解析时出错,为双精度值_Java_Numberformatexception - Fatal编程技术网

Java.lang.NumberFormatException解析时出错,为双精度值

Java.lang.NumberFormatException解析时出错,为双精度值,java,numberformatexception,Java,Numberformatexception,我有一个需要格式化的双精度值 NumberFormat dft = NumberFormat.getInstance(); dft.setMaximumFractionDigits(3); dft.setRoundingMode(RoundingMode.UP); Double n= Double.parseDouble(dft.format(xyz)); //1,733.211 我无法格式化它,因为它有,所以如何从n中删除它。如果您想要有数值,您需要使用NumberFormat类的解析方法

我有一个需要格式化的双精度值

NumberFormat dft = NumberFormat.getInstance(); 
dft.setMaximumFractionDigits(3);
dft.setRoundingMode(RoundingMode.UP);
Double n= Double.parseDouble(dft.format(xyz)); //1,733.211
我无法格式化它,因为它有,所以如何从n中删除它。

如果您想要有数值,您需要使用NumberFormat类的解析方法首先解析数字,例如:

Number number = NumberFormat.getNumberInstance().parse("1,733.211");
System.out.println(number);
完成后,您可以将其格式化:

NumberFormat dft = NumberFormat.getInstance(); 
dft.setMaximumFractionDigits(3);
dft.setRoundingMode(RoundingMode.UP);
System.out.println(dft.format(number));

假设xyz是一个字符串,您只想删除逗号:

Double n= Double.parseDouble(dft.format(xyz.replaceAll("[^0-9.]", "")));

你根本不需要Double.parseDouble。你希望最后的值是多少?@azro我有一个双精度值,小数点后有长数字,我需要将其修剪到小数点后3位,并保存回相同的变量。数字是双精度的,而不是字符串。这是可能的,但是冗余的,而且只是一个解决办法,可以转换成字符串,然后再转换回双精度。谢谢,我还有一个问题,NumberFormat nft=new DecimalFormat0.00;双num1=1.5215897010460924E24;字符串s1=String.valueOfnum1;Log.printLines//1.52158977010460924E24 Log.printLinenft.formatDouble.parseDouble 1//1521589701046092400000000.00为什么我会得到这样的输出?它们都是相等的,第一个是科学符号格式。请看以下示例: