如何在Java中将BigDecimal乘以整数?我试过这个但不正确。
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;
}
答案 0 :(得分:75)
您的代码中有很多类型不匹配,例如尝试将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;
}
}
答案 1 :(得分:3)
如果我是你,我会设置BigDecimal的比例,这样我就不会在冗长的数字上结束。 下面BigDecimal初始化中的整数2设置比例。
由于您有很多不匹配的数据类型,我已相应更改它以进行调整。
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
,否则当您尝试添加totalCost
或itemCost
时,它可以为您提供nullpointer
答案 2 :(得分:2)
首先,BigDecimal.multiply()
会返回BigDecimal
,并且您尝试将其存储在int
中。
其次,将另一个BigDecimal
作为参数,而不是int
。
如果您只对这些计算中涉及的所有变量使用BigDecimal
,它应该可以正常工作。