以下のように表示されます。
- (例外表示)
- Exception in thread "xxx" java.lang.ArithmeticException: xxx
原因
- 不正な計算が行われるとこのエラーが発生します。
(ゼロ除算やBigDecimalにて割り切れない割り算を行ったなど)
対処方法
- 不正な計算が行われないようにする
発生例
以下のようなパターンでエラーが発生します。
例1)100を0で割る
1 2 3 4 5 6 |
public class Sample { public static void main(String[] args) { int a = 100/0; System.out.println(a); } } |
- コマンドプロンプト
- C:\>java Sample Exception in thread "main" java.lang.ArithmeticException: / by zero at Sample.main(Sample.java:3)
ゼロ除算は許可されていないのでエラーとなります。
例2)BigDecimalにて10/3を行う
1 2 3 4 5 6 7 8 9 10 |
import java.math.BigDecimal; public class Sample { public static void main(String[] args) { BigDecimal bd1 = new BigDecimal(10); BigDecimal bd2 = new BigDecimal(3); BigDecimal bd3 = bd1.divide(bd2); System.out.println(bd3); } } |
- コマンドプロンプト
- C:\>java Sample Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(BigDecimal.java:1690) at Sample.main(Sample.java:7)
10/3は3.333...と無限小数となるためBigDecimalの演算ではエラーとなります。
この場合、divideの引数に丸め方法を指定すればOKです。