Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Странное поведение чисел.... (часть 2)

61K
30 ноября 2010 года
sult9191
7 / / 09.11.2010
Только думал справился с проблемой, которая описана здесь http://forum.codenet.ru/showthread.php?t=65014
как возникла следующая. Вот код
 
Код:
public static void main(String args[]) {
        BigDecimal d1 = BigDecimal.valueOf(6.0);
        BigDecimal d2 = BigDecimal.valueOf(1).divide(d1);
        System.out.println(d2);
    }

и выходит ошибка

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)

не понимаю почему компилятор выводит исключение, не я конешно могу обработать это исключение, но мне просто интересно, почему так?)) может кто сталкивался
62K
30 ноября 2010 года
Artyom2010
8 / / 02.09.2010
Код:
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);    
    }
}


А в Вашем варианте результат деления не представим в виде конечной десятичной дроби. Исключение как раз об этом и говорит.
 
Код:
d2.divide(d1, 5, BigDecimal.ROUND_HALF_EVEN);


Здесь второй параметр - точность, третий - тип округления.
63K
20 декабря 2010 года
Griboedov
5 / / 01.10.2010
что я вмешиваюсь, мне тоже хотелось бы высказать своё мнение.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог