2016-01-21 1 views
0
BigDecimal bd1 = new BigDecimal(8757).divide(new BigDecimal(12)); 

я получаю следующее исключение:BigDecimal - ArithmeticException даже с точными представимыми результате

Caused by: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 

Почему это так? Результатом разделения должно быть 729,75, которое имеет конечное десятичное расширение (.75).

+2

Вы уверены, что это причина? он работает отлично, по крайней мере для меня – SomeJavaGuy

+2

Вы уверены, что ** это код, который вы используете? Он отлично работает на моей машине, возвращая 729,75. – Mureinik

+0

То же самое здесь. Какую версию Java вы используете. Не могли бы вы включить более подробную информацию, например, остальную часть кода, где вы используете это? – pczeus

ответ

0

Я выяснил, в чем проблема. Код, который был фактически выполнен следующим образом:

public class ClassA { 
    public static final BigDecimal BD2= new BigDecimal(12); 
} 

public ClassB { 
    public static final BigDecimal BD1 = new BigDecimal(8757); 
    public static final BigDecimal RESULT = BD1.divide(ClassA.BD2); 
} 

BD2 не был инициализирован, когда метод был назван divide() (я проверил, что с помощью контрольной точки). Тем не менее, я все еще думаю, что есть ошибка, поскольку в этом случае он не должен генерировать это исключение, которое совершенно не связано с тем, что происходит. Я думаю, BD2 имеет значение null, когда вызывается divide().

 Смежные вопросы

  • Нет связанных вопросов^_^