Javaで合計したい。
それで、
例えば、
1.123 + 1.123E-4 = 0.0123411234
では、Javaで「E」を処理するにはどうすればよいですか?
使用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
BigDecimal
クラスを使用します。「1.123E-」のような文字列を受け取るコンストラクタについては、http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String)を参照してください。 4"。
これを行うために使用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
このような意味ですか?
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()
メソッドは、teE表記を解析できます。
そして実際には、結果は次のようになります:1.1231123
さて、あなたもそれを試しましたか?
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
ください。