님 발생했습니다 :
java.lang.ArithmeticException: Non-terminating decimal expansion;
no exact representable decimal result.
는,이 예제를 고려하는 것이다 yeld이 정확한 예외 :
0.3333(3)
의 더 정확한 표현이 없기 때문에입니다
BigDecimal x = new BigDecimal(1);
BigDecimal y = new BigDecimal(3);
BigDecimal result = x.divide(y);
. 당신이해야 할 일은 이 지정하는 것입니다 반올림 및 정밀도 :
BigDecimal result = x.divide(y, 10 /*scale*/, RoundingMode.HALF_UP);
System.out.println(result); //will print "0.3333333333"
는 또한
float
은 정확한 표현이 아니다 당신이,
String
에서 직접
BigDecimal
를 만들어야 있습니다. 이것을 고려하십시오 :
String s = "0.123456789";
System.out.println(Float.parseFloat(s)); //prints 0.12345679
System.out.println(new BigDecimal(s)); //prints 0.123456789
그것은 당신이 대략적인 결과를 원하는 경우가 있습니다./오류 (들)이 일어나고있는 무슨 라인 (들)에
dobule x = Double.parseDouble(a.getText());
dobule y = Double.parseDouble(b.getText());
res.setText("=" + (x/y));
입니다 :이 그럼 그냥
float
또는double
만 갈? – skiwi앱이 강제로 닫히지 않고 오류가 발생하지 않습니다. 하지만 120/10에서 정확하게 대답합니다 – amirmamed
다음 번에 Android에서 오류를 디버그 할 수없는 경우 먼저 코드 블록 (Android 프레임 워크가 필요하지 않은 경우)이 일반 Java에서 실행 중인지 확인하십시오. – skiwi