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

你的代码中有很多types不匹配 ,比如试图把一个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; } } 

如果我是你,我会设置BigDecimal的规模,以便我不会结束冗长的数字。 下面的BigDecimal初始化中的整数2设置比例。

由于你有很多数据types的不匹配,我已经相应地进行了调整来调整。

 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来计算这些计算中涉及的所有variables,则应该可以正常工作。