代码之家  ›  专栏  ›  技术社区  ›  ema

Java中如何将整数转换为bigdecimal

  •  9
  • ema  · 技术社区  · 6 年前

    我想创建一个计算整数和bigdecimal相乘的方法。我在谷歌和论坛上搜索,但什么也没找到。

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

    我怎样才能解决这个问题?

    4 回复  |  直到 3 年前
        1
  •  25
  •   Sheepy    6 年前

    要将整数(或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.
    

    注: valueOf 不同于 new ,并且由于不同的原因 BigDecimal BigInteger 。 在这两种情况下,我建议 价值 结束


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

    public BigDecimal methCal ( int quantite, BigDecimal prixUnit ) {
        return BigDecimal.valueOf( quantite ).multiply( prixUnit );
    }
    
        2
  •  6
  •   Jeroen Steenbeeke Karan    6 年前

    如果你知道要找什么,谷歌肯定可以帮你:

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

    正如您所说的,您希望将一个int和一个BigDecimal相乘,可以通过以下方式实现:

    BigDecimal result = yourBigDecimal.multiply(BigDecimal.valueOf(yourInt));
    

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

    int intResult = result.intValue();
    

    请记住,这会丢掉分数。如果要取整,请执行以下操作:

    int intResult = result.round(0, RoundingMode.HALF_UP).intValue();
    
        3
  •  1
  •   Peter Mortensen Len Greski    3 年前

    尝试以下操作:

    import java.math.*;
    
    public class calculator {
    
        public static void main(String[] args) {
    
            BigDecimal value1 = new BigDecimal("3383878445");
            BigDecimal returnValue = calculation(2, value1);
            System.out.println("value is:" + returnValue);
        }
    
        public static BigDecimal calculation(int no1, BigDecimal no2) {
            BigDecimal value = BigDecimal.valueOf(no1).multiply(no2);
            return value;
        }
    }
    
        4
  •  0
  •   Imal    6 年前

    这些来自Java API的方法将非常有用。

    public BigDecimal multiply​(BigDecimal multiplicand)
    

    返回一个BigDecimal,其值为(此被乘数),其小数位数为(this.scale()+被乘数)。缩放())。

    参数: 被乘数-要乘以此BigDecimal的值。 返回值: 这个*被乘数

    public BigDecimal​(int val)
    

    将int转换为BigDecimal。BigDecimal的小数位数为零。

    参数: val—要转换为BigDecimal的int值。