Умножение и деление на BigDecimal и integer - Java - PullRequest
0 голосов
/ 31 марта 2019

Это лучший способ вычислить BigDecimal с целым числом?Это работает, как есть, но я думаю о наилучшей практике и должен ли я обрабатывать возможные исключения.

    Integer salary = 120000;
    BigDecimal incomeRate = BigDecimal.valueOf(30.5).setScale(2, RoundingMode.HALF_UP);

    //Formula: salary * incomeRate/100
    BigDecimal taxableAmount = incomeRate.multiply(BigDecimal.valueOf(salary)).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
    System.out.println("Income: " + salary);
    System.out.println("Payable Tax: " + taxableAmount);

Результат: Доход: 120000 Налог на прибыль: 36600.00

1 Ответ

0 голосов
/ 31 марта 2019

Вы всегда должны использовать функции BigDecimal для выполнения операций с целочисленными значениями.Целое число может быть представлено как BigDecimal, но не всегда наоборот, например, если попытаться привести BigDecimal к целому числу следующим образом:

myBigDecimal.intValueExact () оно выдаст исключение, если вы потеряете информацию.

так что просто делайте так, как вы делаете, и конвертируйте Integer в BigDecimal, а не наоборот, чтобы ничего плохого не случилось.

Вы можете проверить эту ссылку , в ней много информации о BigDecimal и BigInteger в Java.

...