Как разделить с BigDecimals - PullRequest
       16

Как разделить с BigDecimals

0 голосов
/ 10 февраля 2019

Я хочу разделить BigDecimals, 1 / 14819.79865821543, но результат будет 0 вместо 0.00006748

, где coinRateInUSDWalletTo = 14819.79865821543 и сумма = 1

BigDecimal numberOfCoinsToTransfer = amount.divide(
    new BigDecimal(coinRateInUSDWalletTo),
    RoundingMode.HALF_UP);

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Вы забыли указать масштаб.

Ниже приведено объявление для метода BigDecimal.divide () .

публичное деление BigDecimal (делитель BigDecimal,int scale, RoundingMode roundingMode)

Если указать шкалу 8, вы получите желаемый ответ: 0.00006748

 BigDecimal numberOfCoinsToTransfer = amount.divide(new BigDecimal 
 (coinRateInUSDWalletTo),8, RoundingMode.HALF_UP);
0 голосов
/ 10 февраля 2019

Вы должны указать scale для BigDecimal.

final BigDecimal coinRateInUSDWalletTo = new BigDecimal("14819.79865821543");
final BigDecimal result = BigDecimal.ONE.divide(
    coinRateInUSDWalletTo,
    10 /* Scale */,
    RoundingMode.HALF_UP
);

Обратите внимание также на использование BigDecimal.ONE.Не нужно создавать еще один (смеется).

...