[英]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.
注意:
valueOf
與new
不同,並且由於BigDecimal和BigInteger 的不同原因。 在這兩種情況下,我都推薦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.