在Java中从指数形式转换为十进制

时间:2009-12-01 13:01:18

标签: java

我想将指数转换为十进制。例如1.234E31234

9 个答案:

答案 0 :(得分:15)

这不是真正的转化,而是关于您显示数字的方式。您可以使用NumberFormat指定数字的显示方式。

检查区别:

double number = 100550000.75;
NumberFormat formatter = new DecimalFormat("#0.00");

System.out.println(number);
System.out.println(formatter.format(number));

答案 1 :(得分:11)

BigDecimal.valueOf(doubleToFormat).toPlainString()

怎么样?

答案 2 :(得分:1)

在Java中使用双打和长数时,您将看到大部分值都以指数形式显示。

例如:在下面我们将2.35乘以10000并打印结果。

//Division example
Double a = 2.85d / 10000;
System.out.println("1. " + a.doubleValue());

//Multiplication example
a = 2.85d * 100000000;
System.out.println("2. " + a.doubleValue());

<强>结果:

  1. 2.85E-4
  2. 2.85E8
  3. 因此,您可以看到结果以指数格式打印。现在,您可能希望以纯十进制格式显示结果,如:0.000285或285000000.您只需使用类java.math.BigDecimal即可。在下面的示例中,我们使用BigDecimal.valueOf()将Double值转换为BigDecimal而不是.toPlainString(),以将其转换为纯十进制字符串。

    import java.math.BigDecimal;
    //..
    //..
    
    //Division example
    Double a = 2.85d / 10000;
    System.out.println("1. " + BigDecimal.valueOf(a).toPlainString());
    
    //Multiplication example
    a = 2.85d * 100000000;
    System.out.println("2. " + BigDecimal.valueOf(a).toPlainString());
    

    <强>结果:

    1. 0.000285
    2. 2.85亿
    3. 上述方法的唯一缺点是它会生成长串数。您可能希望限制该值并将数字四舍五入为5或6小数点。为此,您可以使用java.text.DecimalFormat课程。在下面的示例中,我们将数字四舍五入为4小数点并打印输出。

      import java.text.DecimalFormat;
      //..
      //..
      
      Double a = 2.85d / 10000;
      DecimalFormat formatter = new DecimalFormat("0.0000");
      System.out.println(formatter .format(a));
      

      <强>结果:

      0.0003

        

      我刚尝试用一行压缩这段代码,它会打印出&#39; a&#39;有两个小数位:

      new DecimalFormat("0.00").format(BigDecimal.valueOf(a).toPlainString());
      

      快乐转换:)

答案 3 :(得分:0)

你可以使用它将它变成一个String DecimalFormat

答案 4 :(得分:0)

@ b.roth的答案只有在特定国家/地区时才是正确的。我使用了这个方法并得到了i18n问题,因为new DecimalFormat("#0.00)采用了特定国家/地区的小数分隔符。例如,如果一个国家使用十进制分隔作为“,”,那么格式化的值将在某些地方的0,00(例如1.2e2将在某些地方120.00和120,00)由于i18n问题所述{ {3}} ..

我喜欢的方法是`(new BigDecimal(“1.2e2”)。toPlainString())

答案 5 :(得分:0)

只需将以下标记添加到jspx: -

<f:convertNumber maxFractionDigits="4" minFractionDigits="2" groupingUsed="false"/>

答案 6 :(得分:0)

String data =  Long.toString((long) 3.42E8);
System.out.println("**************"+data);

答案 7 :(得分:0)

尝试以下

long l;
double d;  //It holds the double value.such as 1.234E3 
l=Double.valueOf(time_d).longValue();

你在变量l。

中得到十进制值

答案 8 :(得分:0)

你可以这样做:

BigDecimal
    .valueOf(value)
    .setScale(decimalLimit, RoundingMode.HALF_UP)
    .toPlainString()