我想创建一个计算整数和大数相乘的方法。我在 Google 和论坛上进行了搜索,但没有找到任何内容。
import java.math.BigDecimal;
private Integer quantite;
private BigDecimal prixUnit;
public Integer getQuantite() {
return quantite;
}
public void setQuantite(Integer quantite) {
this.quantite = quantite;
}
public BigDecimal getPrixUnit() {
return prixUnit;
}
public void setPrixUnit(BigDecimal prixUnit) {
this.prixUnit = prixUnit;
}
public BigDecimal methCal(BigDecimal quantite, BigDecimal prixUnit) {
this.prixUnit=prixUnit;
BigDecimal j = new BigDecimal(quantite);
this.j = quantite;
return quantite*prixUnit;
}
我该如何解决这个问题?
最佳答案
要将整数(或 byte/short/float/double)与 BigInteger(或 BigDecimal)相乘,您必须先将 native 数字转换为 BigInteger/BigDecimal。
// int parameter can be int or Integer
public static BigInteger multiply ( int a, BigInteger b ) {
return BigInteger.valueOf( a ).multiply( b );
}
// BigInteger <> BigDecimal
public static BigDecimal multiply ( int a, BigDecimal b ) {
return BigDecimal.valueOf( a ).multiply( b );
}
// same for add, subtract, divide, mod etc.
Note:
valueOf
is not the same asnew
, and for different reasons on BigDecimal and BigInteger. In both cases, I recommendvalueOf
overnew
.
我看到您添加了代码,很好。
它不起作用,因为 Integer 与 BigDecimal 混合使用,而且 *
不适用于 BigDecimal。
如果将它与我的代码进行比较,修复应该是显而易见的:
public BigDecimal methCal ( int quantite, BigDecimal prixUnit ) {
return BigDecimal.valueOf( quantite ).multiply( prixUnit );
}
关于java - 如何在 Java 中将整数转换为 bigdecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49853552/