0

我想在java中求和。

所以,

例如,

1.123 + 1.123E-4 = 0.0123411234

那么,我如何在java中处理“E”?

4

5 回答 5

2

使用BigDecimal

public static void main( String[] args ) {
    BigDecimal bigDecimal1 = new BigDecimal( "1.123" );
    BigDecimal bigDecimal2 = new BigDecimal( "1.123E-4" );
    BigDecimal sum = bigDecimal1.add( bigDecimal2 );
    System.out.println( sum );
}

输出:

1.1231123
于 2012-08-08T02:22:41.730 回答
1

使用BigDecimal类。有关将采用类似“ 1.123E- 4"。

于 2012-08-08T02:22:32.400 回答
0

你的意思是这样的?

String a = "1.123";
String b = "1.123E-4";

double d1 = Double.valueOf(a);
double d2 = Double.valueOf(b);

System.out.println("sum = " + (d1 + d2));

Double 的valueOf()方法可以为您解析 te E符号。

实际上,结果是:1.1231123

于 2012-08-08T02:22:13.087 回答
0

好吧,你试过了吗?

final class SciNotationTest {

  public static void main(final String[] argv) {
    final double sum = 1.123 + 1.123E-4;
    System.out.println(sum);
    assert 1.1231123 == sum;
  }
}

C:\dev\scrap>javac SciNotationTest.java

C:\dev\scrap>java -ea SciNotationTest
1.1231123

在使用和测试没有容差的相等性时应该小心double,因为浮点数通常不精确。如果高精度是您追求的目标,请确实使用BigDecimal.

于 2012-08-08T02:27:15.117 回答
0

用来Double.parseDouble()做这个...

String n1 = "1.123";
String n2 = "1.123E-4";

double dn1 = Double.parseDouble(n1);
double dn2 = Double.parseDouble(n2);


System.out.println("Total : " + (dn1 + dn2));

输出:

1.1231123
于 2012-08-08T05:07:34.153 回答