public abstract class MathUtils
extends java.lang.Object
add ( new Integer(10), new Integer(1))
will return an Integer
-Object with the value 11add ( new Long(10), new Integer(1))
will return an Long
-Object with the value 11add ( new Integer(10), new Float(1))
will return an Float
-Object with the value 11add (new Integer (Integer.MAX_VALUE), 1)
a
Long
-object will be returned with the correct value of Integer.MAX_VALUE+1
.multiply
,add
and substract
implement overflow
checks for long
-values. That means that if an overflow occurs while working with long values a BigInteger
will be returned.Modifier and Type | Field and Description |
---|---|
protected static int |
BASE_BIGDECIMAL |
protected static int |
BASE_BIGINTEGER |
protected static int |
BASE_DOUBLE |
protected static int |
BASE_FLOAT |
protected static int |
BASE_LONG
The constants are used to determine in which context we have to calculate.
|
protected static java.math.BigDecimal |
DECIMAL_ZERO
A BigDecimal representing the number 0
|
private static java.util.Map<java.lang.Class<? extends java.lang.Number>,java.math.BigDecimal> |
ints
The
Class -object is key, the maximum-value is the value |
private static java.util.List<java.lang.Class<? extends java.lang.Number>> |
typesBySize
The "size" of the number-types - ascending.
|
Constructor and Description |
---|
MathUtils() |
Modifier and Type | Method and Description |
---|---|
static java.lang.Number |
add(java.lang.Number op1,
java.lang.Number op2)
Add two numbers and return the correct value / type.
|
static int |
compare(java.lang.Number op1,
java.lang.Number op2)
Compare two numbers.
|
static java.lang.Number |
divide(java.lang.Number op1,
java.lang.Number op2)
Divide two numbers.
|
static int |
findCalculationBase(java.lang.Number op)
Find the Number-type to be used for a single number
|
private static int |
findCalculationBase(java.lang.Number op1,
java.lang.Number op2)
Find the common Number-type to be used in calculations.
|
static boolean |
isInteger(java.lang.Number n)
Test, whether the given object is an integer value
(Byte, Short, Integer, Long, BigInteger)
|
static boolean |
isZero(java.lang.Number n)
Compare the given Number to 0.
|
static java.lang.Number |
modulo(java.lang.Number op1,
java.lang.Number op2)
Modulo two numbers.
|
static java.lang.Number |
multiply(java.lang.Number op1,
java.lang.Number op2)
Multiply two numbers and return the correct value / type.
|
static java.lang.Number |
negate(java.lang.Number op)
Negate a number
|
static java.lang.Number |
subtract(java.lang.Number op1,
java.lang.Number op2)
Subtract two numbers and return the correct value / type.
|
static java.math.BigDecimal |
toBigDecimal(java.lang.Number n)
Convert the given Number to a BigDecimal
|
static java.math.BigInteger |
toBigInteger(java.lang.Number n)
Convert the given Number to a BigInteger
|
static java.lang.Number |
wrapPrimitive(long value,
java.lang.Class<?> type)
Wrap the given primitive into the given class if the value is in the
range of the destination type.
|
private static java.lang.Number |
wrapPrimitive(long value,
java.lang.Number op1,
java.lang.Number op2)
Wrap the result in the object of the bigger type.
|
protected static final java.math.BigDecimal DECIMAL_ZERO
protected static final int BASE_LONG
protected static final int BASE_FLOAT
protected static final int BASE_DOUBLE
protected static final int BASE_BIGINTEGER
protected static final int BASE_BIGDECIMAL
private static final java.util.Map<java.lang.Class<? extends java.lang.Number>,java.math.BigDecimal> ints
Class
-object is key, the maximum-value is the valueprivate static final java.util.List<java.lang.Class<? extends java.lang.Number>> typesBySize
public static java.math.BigDecimal toBigDecimal(java.lang.Number n)
n
- public static java.math.BigInteger toBigInteger(java.lang.Number n)
n
- public static boolean isZero(java.lang.Number n)
n
- public static boolean isInteger(java.lang.Number n)
n
- public static java.lang.Number wrapPrimitive(long value, java.lang.Class<?> type)
value
- type
- private static java.lang.Number wrapPrimitive(long value, java.lang.Number op1, java.lang.Number op2)
value
- result of operation (as a long) - used to check sizeop1
- first operand of binary operationop2
- second operand of binary operationprivate static int findCalculationBase(java.lang.Number op1, java.lang.Number op2)
op1
- first operand of binary operationop2
- second operand of binary operationpublic static int findCalculationBase(java.lang.Number op)
op
- operandpublic static java.lang.Number add(java.lang.Number op1, java.lang.Number op2)
op1
- op2
- public static java.lang.Number subtract(java.lang.Number op1, java.lang.Number op2)
op1
- op2
- public static java.lang.Number multiply(java.lang.Number op1, java.lang.Number op2)
op1
- op2
- public static java.lang.Number divide(java.lang.Number op1, java.lang.Number op2)
op1
- op2
- public static java.lang.Number modulo(java.lang.Number op1, java.lang.Number op2) throws java.lang.ArithmeticException
op1
- op2
- java.lang.ArithmeticException
- If at least one parameter is a BigDecimalpublic static int compare(java.lang.Number op1, java.lang.Number op2)
op1
- op2
- public static java.lang.Number negate(java.lang.Number op)
op
- n