деление большого десятичного числа на целое - PullRequest
4 голосов
/ 19 октября 2011

Я хочу разделить большое десятичное значение целым числом. Я округлил большое десятичное значение (если это 133,333, то округленное значение равно 133). Ниже приведен мой фрагмент кода.

v1 = v1.setScale(0, RoundingMode.HALF_UP);
int temp = BigDecimal.valueOf(v1.longValue()).divide(constant1);

значение константы равно 12. Отображается сообщение об ошибке,

Метод деления (BigDecimal) в типе BigDecimal не применим для аргументов (int)

Может ли кто-нибудь помочь мне сделать деление?

Ответы [ 2 ]

5 голосов
/ 19 октября 2011

Изменение

.divide(constant1);

до

.divide(new BigDecimal(constant1));

Кстати, почему бы вам просто не сделать что-то вроде

int temp = (int) (Math.round(v1.doubleValue()) / constant1);

??

0 голосов
/ 19 октября 2011

Вы должны написать код следующим образом:

int temp = BigDecimal.valueOf(v1.longValue())
        .divide(BigDecimal.valueOf(constant1)).intValue();

Особенность BigDecimal и BigInteger в том, что они в основном работают с экземплярами этих классов, а не с примитивными типами. Результаты операций также являются новыми экземплярами этих классов.

Еще одно замечание: я советую использовать valueOf статический метод вместо конструктора, потому что, делая это, вы можете избежать создания новых объектов. Использование конструктора делает создание нового объекта явным, что вообще не нужно в этом случае.

...