如何在Java中将BigDecimal乘以整数

时间:2012-10-17 22:46:27

标签: java bigdecimal

如何在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;
   }

3 个答案:

答案 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,而不是基元,因此请确保初始化itemCosttotalCost,否则当您尝试添加totalCostitemCost时,它可以为您提供nullpointer

答案 2 :(得分:2)

首先,BigDecimal.multiply()会返回BigDecimal,并且您尝试将其存储在int中。

其次,另一个BigDecimal作为参数,而不是int

如果您只对这些计算中涉及的所有变量使用BigDecimal,它应该可以正常工作。