BigDecimalをtoStringすると指数表記に場合がある
BigDecimalをtoStringすると指数表記になる場合がある。
BigDecimal b = new BigDecimal("0.00000000012345");
String value = b.toString();
System.out.println(value); // 1.2345E-10
上記プログラムでは0.00000000012345
を文字列としてBigDecimal
に渡しているが、toString()
で文字列化すると1.2345E-10
という指数表記になっている。
指数表記にならない文字列化(toPlainString)
BigDecimalの文字列化で指数表記とならないようにするにはtoPlainString()
を使う。
BigDecimal b = new BigDecimal("0.00000000012345");
String value = b.toPlainString();
System.out.println(value); // 0.00000000012345
先述のプログラムのtoString()
をtoPlainString()
に変更すると0.00000000012345
という指数表記にならない文字列化が可能となる。
整数もstripTrailingZeros()で指数表記になる場合がある
整数値の場合でもstripTrailingZeros()
を使うと指数表記になる場合がある。
BigDecimal b = new BigDecimal("10000").stripTrailingZeros();
String value = b.toString();
System.out.println(value); // 1E+4
上記では10000
を文字列としてBigDecimal
に渡し、stripTrailingZeros()
を使った後にtoString()
で文字列化している。
この場合も1E+4
という指数表記になる。
この場合でもtoPlainString()
を使うと指数表記にならない。
BigDecimal b = new BigDecimal("10000").stripTrailingZeros();
String value = b.toPlainString();
System.out.println(value); // 10000
上記プログラムのtoString()
をtoPlainString()
に変更すると10000
という指数表記にならない文字列化が可能となる。
\第一線のプログラマーの行動原理を学べる!/