Подтвердить что ты не робот

Как умножить BigDecimal на целое число в Java

Как вы умножаете BigDecimal на целое число в Java? Я попробовал это, но это не правильно.

import java.math.BigDecimal;
import java.math.MathContext;

public class Payment {
    int itemCost;
    int totalCost = 0;

    public BigDecimal calculateCost(int itemQuantity,BigDecimal itemPrice){
        itemCost = itemPrice.multiply(itemQuantity);
        totalCost = totalCost + itemCost;
    return totalCost;
   }
4b9b3361

Ответ 1

В вашем коде есть много несоответствий типов, например, попытка установить значение int, где требуется BigDecimal. Исправленная версия вашего кода:

public class Payment
{
    BigDecimal itemCost  = BigDecimal.ZERO;
    BigDecimal totalCost = BigDecimal.ZERO;

    public BigDecimal calculateCost(int itemQuantity, BigDecimal itemPrice)
    {
        itemCost  = itemPrice.multiply(new BigDecimal(itemQuantity));
        totalCost = totalCost.add(itemCost);
        return totalCost;
    }
}

Ответ 2

Если бы я был вами, я бы установил масштаб BigDecimal, чтобы я не попадал на длинные числа. Целое число 2 в инициализации BigDecimal ниже устанавливает масштаб.

Поскольку у вас много несоответствий типа данных, я изменил его, чтобы настроить.

class Payment   
{
      BigDecimal itemCost=new BigDecimal(BigInteger.ZERO,  2);
      BigDecimal totalCost=new BigDecimal(BigInteger.ZERO,  2);

     public BigDecimal calculateCost(int itemQuantity,BigDecimal itemPrice)
       { 
           BigDecimal   itemCost = itemPrice.multiply(new BigDecimal(itemQuantity)); 
             return totalCost.add(itemCost); 
       }
  }

BigDecimals - это Object, а не примитивы, поэтому убедитесь, что вы инициализируете itemCost и totalCost, иначе он может дать вам nullpointer при попытке добавить на totalCost или itemCost

Ответ 3

Во-первых, BigDecimal.multiply() возвращает BigDecimal, и вы пытаетесь сохранить это в int.

Во-вторых, в качестве аргумента требуется еще BigDecimal, а не int.

Если вы просто используете BigDecimal для всех переменных, участвующих в этих вычислениях, он должен работать нормально.