Вы столкнулись:
java.lang.ArithmeticException: Non-terminating decimal expansion;
no exact representable decimal result.
Рассмотрим следующий пример, который будет yeld точной исключением:
BigDecimal x = new BigDecimal(1);
BigDecimal y = new BigDecimal(3);
BigDecimal result = x.divide(y);
Это потому, что нет точного представления 0.3333(3)
. Что вам нужно сделать, это указать округление и точность:
BigDecimal result = x.divide(y, 10 /*scale*/, RoundingMode.HALF_UP);
System.out.println(result); //will print "0.3333333333"
Также обратите внимание, что вы должны создать BigDecimal
непосредственно из String
, поскольку float
не является точным представлением. Рассмотрим это:
String s = "0.123456789";
System.out.println(Float.parseFloat(s)); //prints 0.12345679
System.out.println(new BigDecimal(s)); //prints 0.123456789
Это может быть так, что вы хотите, приблизительный результат. Тогда просто пойти с float
или double
только:
dobule x = Double.parseDouble(a.getText());
dobule y = Double.parseDouble(b.getText());
res.setText("=" + (x/y));
На какой линии (ов)/являются ошибки (s) происходит? – skiwi
Не существует приложения error.the, которое принудительно закрывается и .... но в 120/10 он правильно отвечает – amirmamed
В следующий раз, если вы действительно не можете отлаживать ошибку с Android, сначала проверьте, работает ли ваш кодовый блок (если он не требует Android framework) даже в нормальной Java. – skiwi