Comment multiplier un BigDecimal par un entier en Java? J'ai essayé cela mais ce n'est pas correct.
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;
}
Vous avez beaucoup de types-mismatches dans votre code, par exemple essayer de mettre une valeur int
où BigDecimal
est requis. La version corrigée de votre code:
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;
}
}
Si j'étais vous, je réglerais l'échelle du BigDecimal pour que je ne finisse pas avec de longs chiffres. Le nombre entier 2 dans l'initialisation BigDecimal ci-dessous définit l'échelle.
Étant donné que vous avez de nombreux types de données incompatibles, je les ai modifiés en conséquence.
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);
}
}
Les BigDecimals sont des objets, pas des primitives, alors assurez-vous d’initialiser itemCost
et totalCost
, sinon cela peut vous donner nullpointer pendant que vous essayez d’ajouter sur totalCost
ou itemCost
Tout d’abord, BigDecimal.multiply()
renvoie un BigDecimal
et vous essayez de le stocker dans un int
.
Deuxièmement, il prend un autre BigDecimal
comme argument, pas un int
.
Si vous utilisez simplement le BigDecimal
pour toutes les variables impliquées dans ces calculs, cela devrait fonctionner correctement.