簡體   English   中英

如何在Java中將整數轉換為bigdecimal

[英]How to convert an integer to bigdecimal in Java

我想創建一個計算整數和大十進制乘法的方法。 我在谷歌和論壇上搜索,但沒有找到任何東西。

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

我該如何解決這個問題?

要將整數(或字節/短整數/浮點數/雙精度數)與 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 );
}

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

試試這個:

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

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 值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM