public static void main(String args[]) {
BigDecimal d1 = BigDecimal.valueOf(6.0);
BigDecimal d2 = BigDecimal.valueOf(1).divide(d1);
System.out.println(d2);
}
Странное поведение чисел.... (часть 2)
http://forum.codenet.ru/showthread.php?t=65014
как возникла следующая. Вот код
и выходит ошибка
run:
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1603)
at javaapplication9.Main.main(Main.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
не понимаю почему компилятор выводит исключение, не я конешно могу обработать это исключение, но мне просто интересно, почему так?)) может кто сталкивался
Только думал справился с проблемой, которая описана здесь
как возникла следующая. Вот код
Код:
и выходит ошибка
run:
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1603)
at javaapplication9.Main.main(Main.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
не понимаю почему компилятор выводит исключение, не я конешно могу обработать это исключение, но мне просто интересно, почему так?)) может кто сталкивался
Код:
import java.math.BigDecimal;
public class DoubleTest {
public static void main(String args[]) {
BigDecimal d1 = BigDecimal.valueOf(6.00);
BigDecimal d2 = BigDecimal.valueOf(1.00);
BigDecimal d3 = d2.divide(d1, 5, BigDecimal.ROUND_HALF_EVEN);
System.out.println(d3);
}
}
public class DoubleTest {
public static void main(String args[]) {
BigDecimal d1 = BigDecimal.valueOf(6.00);
BigDecimal d2 = BigDecimal.valueOf(1.00);
BigDecimal d3 = d2.divide(d1, 5, BigDecimal.ROUND_HALF_EVEN);
System.out.println(d3);
}
}
А в Вашем варианте результат деления не представим в виде конечной десятичной дроби. Исключение как раз об этом и говорит.
Код:
d2.divide(d1, 5, BigDecimal.ROUND_HALF_EVEN);
Здесь второй параметр - точность, третий - тип округления.
что я вмешиваюсь, мне тоже хотелось бы высказать своё мнение.