|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.apache.velocity.runtime.parser.node.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 BigDecimal
public 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 | ||||||||||