Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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 十进制转换-NumberFormatException_Java_Double_Biginteger - Fatal编程技术网

Java 十进制转换-NumberFormatException

Java 十进制转换-NumberFormatException,java,double,biginteger,Java,Double,Biginteger,我有 字符串编号=1.0E7 我想要它的数字等价物,即显示为 double x = 10000000.0000 我该怎么做呢 我试过Double number=Double.valueOf(number) 但是获取java.lang.NumberFormatException您想要格式化一个双精度值 String it = String.format("%f", 1.0e7); 应该这样做。如果您查看的文档,您可以看到 如果m小于10-3或大于或等于107,则用所谓的“计算机科学符号”表示

我有

字符串编号=1.0E7

我想要它的数字等价物,即显示为

double x = 10000000.0000 
我该怎么做呢

我试过
Double number=Double.valueOf(number)


但是获取
java.lang.NumberFormatException

您想要格式化一个双精度值

String it = String.format("%f", 1.0e7);

应该这样做。

如果您查看的文档,您可以看到

如果m小于10-3或大于或等于107,则用所谓的“计算机科学符号”表示

这就是为什么即使将值解析为double,也只能得到科学符号,即
1.0E7

您可以执行类似的操作来打印所需的双精度值

String number = "1.0E7";
String desiredFormat = String.format("%f", Double.parseDouble(number));
System.out.println(desiredFormat); // Prints 10000000.000000
String number = "1.0E7";
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(Double.parseDouble(number)));
或者,如果您愿意,可以使用

String number = "1.0E7";
String desiredFormat = String.format("%f", Double.parseDouble(number));
System.out.println(desiredFormat); // Prints 10000000.000000
String number = "1.0E7";
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(Double.parseDouble(number)));

这将非常有效

double number=1.0E7;
System.out.println(number);
NumberFormat formatter=new DecimalFormat();
System.out.println(formatter.format(number));

要将数字格式化为4位小数,请使用
String.format(“%.4f”,num)
,如下例所示:

public class k {

  public static void main(String argv[]) {
    String number = "1.0E7";
    Double num = Double.valueOf(number);
    System.out.println("Double="+ num + " Formatted Double=" + String.format("%.4f", num));
  }
}
输出:

String=1.0E7 Formatted Double=10000000,0000

如您所见,我的语言环境使用
作为十进制分隔符。

Double.valueOf(“1.0E7”)
工作正常。显示所有代码。这是
数字值的一部分吗?
可以使用numberFormat。字符串和Double不能使用相同的变量名!可以将最后一行简化为
System.out.format(“Double=%s Formatted Double=%1$.4f%n”,num);