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

必要な場所に値を入れようとするなど、コードに多くの型の不一致があります。コードの修正バージョン:intBigDecimal

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はオブジェクトであり、プリミティブではないため、必ず初期化してください。そうしないitemCosttotalCost、追加しようとしたときにnullpointerが発生する可能性がありますtotalCostitemCost

于 2012-10-17T23:19:39.587 に答える
2

まず、をBigDecimal.multiply()返します。BigDecimalこれをに保存しようとしていますint

第二に、それは引数としてではなく、別のものを取りますBigDecimalint

BigDecimalこれらの計算に関係するすべての変数にforを使用するだけであれば、正常に機能するはずです。

于 2012-10-17T22:52:09.013 に答える