2015-11-24 2 views
0

Я провожу эксперимент, в котором нам иногда приходится делить небольшие числа на большие числа, например: 4/90 000. Использование двойного результата в 4.444444444e. Я надеялся, что, возможно, BigDecimal может справиться с этой арифметикой и дать мне содержательную десятичной, но моя реализация выдает ошибку:Разделение двух целых чисел на большое десятичное число

int count = 4; 
int total = 90,000; 
er = BigDecimal.valueOf(count).divide(BigDecimal.valueOf(total)); 

Ошибка:

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 
at java.math.BigDecimal.divide(BigDecimal.java:1616) 

Обновления: Я интересен по крайней мере 3 десятичному местами точности.

ответ

0

Вы можете передать MathContext методу разделения. Нечто подобное,

int count = 4; 
int total = 90000; 
BigDecimal er = BigDecimal.valueOf(count).divide(BigDecimal.valueOf(total), 
     MathContext.DECIMAL128); 
System.out.println(er); 

И я получаю

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