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

时间:2018-04-16 09:10:04

标签: java netbeans

我想创建一个计算乘法整数和大数的方法。 我在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 ;
    }

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:7)

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

注意:valueOfnew不同,BigDecimalBigInteger的原因各不相同。   在这两种情况下,我建议valueOf超过new

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

public BigDecimal methCal ( int quantite, BigDecimal prixUnit ) {
    return BigDecimal.valueOf( quantite ).multiply( prixUnit );
}

答案 1 :(得分:2)

如果您知道要查找的内容,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);

如您所说,您希望将int和BigDecimal相乘,这将实现如下:

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

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

int intResult = result.intValue();

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

int intResult = result.round(0, RoundingMode.HALF_UP).intValue();

答案 2 :(得分:0)

Java API中的这些方法会很有用。

public BigDecimal multiply​(BigDecimal multiplicand)

返回一个BigDecimal,其值为(this×multiplicand),其比例为(this.scale()+ multiplicand.scale())。

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

public BigDecimal​(int val)

将int转换为BigDecimal。 BigDecimal的比例为零。

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

答案 3 :(得分:0)

试试这个:

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