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

How to convert an integer to bigdecimal in Java

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

我该如何解决这个问题?

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

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

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 API 中的这些方法会有所帮助。

public BigDecimal multiply​(BigDecimal multiplicand)

Returns 一个 BigDecimal,其值为 (this × multiplicand),其小数位数为 (this.scale() + multiplicand.scale()).

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

public BigDecimal​(int val)

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

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

试试这个:

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