66

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;
   }
4

3 回答 3

101

您的代码中有很多类型不匹配,例如尝试将int值放在BigDecimal需要的位置。您的代码的更正版本:

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

    public BigDecimal calculateCost(int itemQuantity, BigDecimal itemPrice)
    {
        itemCost  = itemPrice.multiply(BigDecimal.valueOf(itemQuantity));
        totalCost = totalCost.add(itemCost);
        return totalCost;
    }
}
于 2012-10-17T22:53:00.777 回答
4

如果我是你,我会设置 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 ,而不是原语,因此请确保初始化itemCostand totalCost,否则它会在您尝试添加时为您提供空指针totalCostoritemCost

于 2012-10-17T23:19:39.587 回答
2

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

其次,它anotherBigDecimal作为参数,而不是int.

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

于 2012-10-17T22:52:09.013 回答