前提・実現したいこと
数日前の質問の回答が得られなかったので再質問です。
Heroクラスの矢印をつけているところが循環小数になってしまい、エラーの原因みたいで、ならないように小数点切り捨てにしたのですがエラーが改善されません。どこを直したらいいのでしょうか。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.base/java.math.BigDecimal.divide(BigDecimal.java:1722)
該当のソースコード
java
1import java.math.BigDecimal; 2import java.math.RoundingMode; 3 4class Hero { 5 int hp = 100; 6 7 public int useWaza(){ 8 BigDecimal bd1 = new BigDecimal(60); 9 BigDecimal bd2 = new BigDecimal("1.0"); 10 BigDecimal result = bd1.multiply(bd2); 11 int giveDamage = result.intValue(); 12 return damage(giveDamage); 13 } 14 15 public int damage(int gd) { 16 //BigDecimal bigDecimal3 = bigDecimalPlus.setScale(2, BigDecimal.ROUND_DOWN); 17 BigDecimal bd1 = new BigDecimal("1"); 18 BigDecimal bd2 = new BigDecimal("120"); 19 BigDecimal def = new BigDecimal(55); 20 ⇨BigDecimal dmgSubRate = bd1.divide((bd1.add(def.divide(bd2))),2, RoundingMode.DOWN); 21 22 BigDecimal giveDmg = new BigDecimal(gd); 23 BigDecimal resultDmg = giveDmg.multiply(dmgSubRate); 24 int receiveDmg = resultDmg.intValue(); 25 26 return this.hp -= receiveDmg; 27 } 28} 29
public class Main { public static void main(String[] args) { Hero h = new Hero(); h.useWaza(); System.out.println(h.hp); } }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。