|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.velocity.runtime.parser.node.MathUtils
public abstract class MathUtils
Utility-class for all arithmetic-operations.
All operations (+ - / *) return a Number which type is the type of the bigger argument.
Example:
add ( new Integer(10), new Integer(1))
will return an Integer
-Object with the value 11
add ( new Long(10), new Integer(1))
will return an Long
-Object with the value 11
add ( new Integer(10), new Float(1))
will return an Float
-Object with the value 11
Overflow checking:
For integral values (byte, short, int) there is an implicit overflow correction (the next "bigger"
type will be returned). For example, if you call add (new Integer (Integer.MAX_VALUE), 1)
a
Long
-object will be returned with the correct value of Integer.MAX_VALUE+1
.
In addition to that the methods 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.
For all other operations and types (such as Float and Double) there is no overflow checking.
Field Summary | |
---|---|
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 BigDecimal |
DECIMAL_ZERO
A BigDecimal representing the number 0 |
protected static Map |
ints
The Class -object is key, the maximum-value is the value |
protected static List |
typesBySize
The "size" of the number-types - ascending. |
Constructor Summary | |
---|---|
MathUtils()
|
Method Summary | |
---|---|
static Number |
add(Number op1,
Number op2)
Add two numbers and return the correct value / type. |
static int |
compare(Number op1,
Number op2)
Compare two numbers. |
static Number |
divide(Number op1,
Number op2)
Divide two numbers. |
static boolean |
isInteger(Number n)
Test, whether the given object is an integer value (Byte, Short, Integer, Long, BigInteger) |
static boolean |
isZero(Number n)
Compare the given Number to 0. |
static Number |
modulo(Number op1,
Number op2)
Modulo two numbers. |
static Number |
multiply(Number op1,
Number op2)
Multiply two numbers and return the correct value / type. |
static Number |
subtract(Number op1,
Number op2)
Subtract two numbers and return the correct value / type. |
static BigDecimal |
toBigDecimal(Number n)
Convert the given Number to a BigDecimal |
static BigInteger |
toBigInteger(Number n)
Convert the given Number to a BigInteger |
static Number |
wrapPrimitive(long value,
Class type)
Wrap the given primitive into the given class if the value is in the range of the destination type. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final 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
protected static final Map ints
Class
-object is key, the maximum-value is the value
protected static final List typesBySize
Constructor Detail |
---|
public MathUtils()
Method Detail |
---|
public static BigDecimal toBigDecimal(Number n)
n
-
public static BigInteger toBigInteger(Number n)
n
-
public static boolean isZero(Number n)
n
-
public static boolean isInteger(Number n)
n
-
public static Number wrapPrimitive(long value, Class type)
value
- type
-
public static Number add(Number op1, Number op2)
op1
- op2
-
public static Number subtract(Number op1, Number op2)
op1
- op2
-
public static Number multiply(Number op1, Number op2)
op1
- op2
-
public static Number divide(Number op1, Number op2)
op1
- op2
-
public static Number modulo(Number op1, Number op2) throws ArithmeticException
op1
- op2
-
ArithmeticException
- If at least one parameter is a BigDecimalpublic static int compare(Number op1, Number op2)
op1
- op2
-
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |