如何在 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;
}
}
我想创建一个计算整数和大数相乘的方法。我在 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 asnew
, and for different reasons on BigDecimal and BigInteger. In both cases, I recommendvalueOf
overnew
.
我看到你添加了你的代码,很好。
它不起作用,因为 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;
}
}