十进制转换 - NumberFormatException

时间:2014-03-06 11:32:44

标签: java double biginteger

我有

String number = 1.0E7;

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

double x = 10000000.0000 

我该怎么办呢?

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

但获得java.lang.NumberFormatException

4 个答案:

答案 0 :(得分:1)

您希望格式化一个双倍值。

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

应该这样做。

答案 1 :(得分:1)

这将完美无缺。

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

答案 2 :(得分:0)

如果您查看Double#toString(double)的文档,就可以看到

  

如果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

如果您愿意,也可以使用NumberFormat

String number = "1.0E7";
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(Double.parseDouble(number)));

答案 3 :(得分:0)

要格式化带有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

如您所见,我的语言环境使用,作为小数点分隔符。