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

标签 java integer bigdecimal

我想创建一个计算整数和大数相乘的方法。我在 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 as new, and for different reasons on BigDecimal and BigInteger. In both cases, I recommend valueOf over new.


我看到您添加了代码,很好。 它不起作用,因为 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/

相关文章:

java - 如何解决MySQL语法错误异常?

python - 如何让 python 3 接受整数和字符串答案

java - 为什么这个 Java 程序没有显示我期望的结果?

java - 从 Java 方法返回时,BigDecimal 不保留实际值

java - 连接两个数字

java - 对于带有基元的每个循环修改

Java - 从属性文件获取值

java - 无法解析 'javax.persistence.EntityManager' 的 bean

c - 从 c 中的整数值中抓取位

java - 当 'e' 是非常大的 e 的十进制时,如何对 e 求幂?