I want to create a method that caculates multiplication an integer and a bigdecimal. I search on google and forums nothing I found.
import java.math.BigDecim
To multiply an integer (or byte/short/float/double) with a BigInteger (or BigDecimal), you must convert the native number to BigInteger/BigDecimal first.
// 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
.
I see that you added your code, nice.
It doesn't work because Integer is mixed with BigDecimal, and also *
does not work with BigDecimal.
If you compare it with my code, the fix should be obvious:
public BigDecimal methCal ( int quantite, BigDecimal prixUnit ) {
return BigDecimal.valueOf( quantite ).multiply( prixUnit );
}
Try this:
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;
}
}
These methods from the Java API will be helpful.
public BigDecimal multiply(BigDecimal multiplicand)
Returns a BigDecimal whose value is (this × multiplicand), and whose scale is (this.scale() + multiplicand.scale()).
Parameters: multiplicand - value to be multiplied by this BigDecimal. Returns: this * multiplicand
public BigDecimal(int val)
Translates an int into a BigDecimal. The scale of the BigDecimal is zero.
Parameters: val - int value to be converted to BigDecimal.
Google definitely could have helped you, if you know what to look for:
https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html#BigDecimal-int-
This is one of the constructors for BigDecimal, which allows you to do the following:
BigDecimal five = BigDecimal.valueOf(5);
BigDecimal seven = BigDecimal.valueOf(2).add(five);
Seeing as you stated you wanted to multiply an int and a BigDecimal, this would be achieved as follows:
BigDecimal result = yourBigDecimal.multiply(BigDecimal.valueOf(yourInt));
And, supposing you want this result as an int:
int intResult = result.intValue();
Keep in mind that this throws away the fraction though. If you want rounding instead:
int intResult = result.round(0, RoundingMode.HALF_UP).intValue();