簡體   English   中英

如何在 Java 中將 BigDecimal 乘以一個整數

[英]How to multiply a BigDecimal by an integer in Java

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

您的代碼中有很多類型不匹配,例如試圖在需要BigDecimal地方放置一個int值。 您的代碼的更正版本:

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

如果我是你,我會設置 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它會給你空itemCost

首先, BigDecimal.multiply()返回一個BigDecimal並且您試圖將其存儲在int

其次,它需要另一個BigDecimal作為參數,而不是int

如果您只是將BigDecimal用於這些計算中涉及的所有變量,它應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM