Package de.tilman_neumann.jml.base
Class BigDecimalMath
java.lang.Object
de.tilman_neumann.jml.base.BigDecimalMath
public class BigDecimalMath
extends java.lang.Object
Basic BigDecimal arithmetics.
-
Method Summary
Modifier and Type Method Description static java.math.BigDecimaladd(java.math.BigDecimal a, BigRational b, Scale resultScale)Computes the sum of a and b accurate to the given resultScale.
Scale is the natural accuracy measure for additions because for each argument, each piece of it (bit, digit, ...) makes its own independent contribution to the result scale.static java.math.BigDecimaladd(java.math.BigDecimal a, java.math.BigInteger b)static java.math.BigIntegerceilInt(java.math.BigDecimal x)Returns ceil(x) as a big integer.static intcompare(java.math.BigDecimal a, java.math.BigInteger b)static java.math.BigDecimaldivide(java.math.BigDecimal a, java.math.BigDecimal b, Precision resultPrecision)static java.math.BigDecimaldivide(java.math.BigDecimal a, java.math.BigDecimal b, Scale resultScale)Division with guaranteed precision.static java.math.BigDecimaldivide(java.math.BigDecimal a, java.math.BigInteger b, Precision resultPrecision)static java.math.BigDecimaldivide(java.math.BigDecimal a, java.math.BigInteger b, Scale resultScale)Division by an integer.static java.math.BigIntegerfloorInt(java.math.BigDecimal x)Returns floor(x) as a big integer.static java.math.BigDecimalfrac(java.math.BigDecimal x)Returns the fractional part of x, with the same scale than x.static java.math.BigDecimalmultiply(java.math.BigDecimal a, long b)Computes the product a*b without precision loss.static java.math.BigDecimalmultiply(java.math.BigDecimal a, BigRational b, Precision resultPrecision)Computes the product of a and b.
Precision is the natural accuracy measure for multiplications because for each argument, each piece of it (bit, digit, ...) makes its own independent contribution to the result precision.static java.math.BigDecimalmultiply(java.math.BigDecimal a, BigRational b, Scale resultScale)static java.math.BigDecimalmultiply(java.math.BigDecimal a, java.math.BigInteger b)Multiplication without precision loss.static java.math.BigIntegerroundInt(java.math.BigDecimal x)Round x to the nearest integer.static java.math.BigDecimalsubtract(java.math.BigDecimal a, java.math.BigInteger b)Computes the difference of a and b.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Method Details
-
add
Computes the sum of a and b accurate to the given resultScale.
Scale is the natural accuracy measure for additions because for each argument, each piece of it (bit, digit, ...) makes its own independent contribution to the result scale.- Parameters:
a-b-resultScale-- Returns:
- sum
-
add
public static java.math.BigDecimal add(java.math.BigDecimal a, java.math.BigInteger b) -
subtract
public static java.math.BigDecimal subtract(java.math.BigDecimal a, java.math.BigInteger b)Computes the difference of a and b.- Parameters:
a-b-- Returns:
- a-b
-
multiply
public static java.math.BigDecimal multiply(java.math.BigDecimal a, BigRational b, Precision resultPrecision)Computes the product of a and b.
Precision is the natural accuracy measure for multiplications because for each argument, each piece of it (bit, digit, ...) makes its own independent contribution to the result precision.- Parameters:
a-b-resultPrecision-- Returns:
- product
-
multiply
public static java.math.BigDecimal multiply(java.math.BigDecimal a, BigRational b, Scale resultScale) -
multiply
public static java.math.BigDecimal multiply(java.math.BigDecimal a, java.math.BigInteger b)Multiplication without precision loss.- Parameters:
a- big floatb- big integer- Returns:
- a*b
-
multiply
public static java.math.BigDecimal multiply(java.math.BigDecimal a, long b)Computes the product a*b without precision loss.- Parameters:
a-b-- Returns:
- a*b
-
divide
public static java.math.BigDecimal divide(java.math.BigDecimal a, java.math.BigDecimal b, Scale resultScale)Division with guaranteed precision.- Parameters:
a- dividendb- divisorresultScale- result accuracy in decimal digits after the floating point- Returns:
- a / b
-
divide
public static java.math.BigDecimal divide(java.math.BigDecimal a, java.math.BigDecimal b, Precision resultPrecision) -
divide
public static java.math.BigDecimal divide(java.math.BigDecimal a, java.math.BigInteger b, Scale resultScale)Division by an integer.- Parameters:
a- dividendb- divisorresultScale- result accuracy in decimal digits after the floating point- Returns:
- quotient with wanted precision.
-
divide
public static java.math.BigDecimal divide(java.math.BigDecimal a, java.math.BigInteger b, Precision resultPrecision) -
frac
public static java.math.BigDecimal frac(java.math.BigDecimal x)Returns the fractional part of x, with the same scale than x.- Parameters:
x-- Returns:
- frac(x)
-
roundInt
public static java.math.BigInteger roundInt(java.math.BigDecimal x)Round x to the nearest integer.- Parameters:
x-- Returns:
- round(x)
-
ceilInt
public static java.math.BigInteger ceilInt(java.math.BigDecimal x)Returns ceil(x) as a big integer.- Parameters:
x-- Returns:
- ceil(x)
-
floorInt
public static java.math.BigInteger floorInt(java.math.BigDecimal x)Returns floor(x) as a big integer.- Parameters:
x-- Returns:
- floor(x)
-
compare
public static int compare(java.math.BigDecimal a, java.math.BigInteger b)- Parameters:
a-b-- Returns:
- <0/0/>0 if a is smaller/equal/greater than b.
-