如何在java中将整数转换为bigdecimal

ema*_*ema 3 java netbeans

我想创建一个计算乘法整数和大数字的方法.我搜索谷歌和论坛没有找到我.

    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 ;
    }
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?

She*_*epy 10

要将整数(或byte/short/float/double)与BigInteger(或BigDecimal)相乘,必须首先将本机编号转换为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.
Run Code Online (Sandbox Code Playgroud)

注意:与BigDecimalBigInteger上的不同原因valueOf不一样.在这两种情况下,我建议结束.newvalueOfnew


我看到你添加了你的代码,很好.它不起作用,因为Integer与BigDecimal混合,*也不适用于BigDecimal.如果将它与我的代码进行比较,修复应该是显而易见的:

public BigDecimal methCal ( int quantite, BigDecimal prixUnit ) {
    return BigDecimal.valueOf( quantite ).multiply( prixUnit );
}
Run Code Online (Sandbox Code Playgroud)


Jer*_*eke 6

如果您知道要查找的内容,Google 绝对可以帮助您:

https://docs.oracle.com/javase/9​​/docs/api/java/math/BigDecimal.html#BigDecimal-int-

这是 BigDecimal 的构造函数之一,它允许您执行以下操作:

BigDecimal five = BigDecimal.valueOf(5);
BigDecimal seven = BigDecimal.valueOf(2).add(five);
Run Code Online (Sandbox Code Playgroud)

正如您所说,您想将一个 int 和一个 BigDecimal 相乘,这将按如下方式实现:

BigDecimal result = yourBigDecimal.multiply(BigDecimal.valueOf(yourInt));
Run Code Online (Sandbox Code Playgroud)

并且,假设您希望此结果为 int:

int intResult = result.intValue();
Run Code Online (Sandbox Code Playgroud)

请记住,这会丢弃分数。如果你想要四舍五入:

int intResult = result.round(0, RoundingMode.HALF_UP).intValue();
Run Code Online (Sandbox Code Playgroud)