|
|||||||||||
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 java.math.BigDecimal |
DECIMAL_ZERO
A BigDecimal representing the number 0 |
protected static java.math.BigInteger |
INT_ZERO
|
protected static java.util.Map |
ints
The Class -object is key, the maximum-value is the value |
protected static java.util.List |
typesBySize
The "size" of the number-types - ascending. |
Constructor Summary | |
MathUtils()
|
Method Summary | |
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. |
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 |
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. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected static java.math.BigDecimal DECIMAL_ZERO
protected static java.math.BigInteger INT_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 java.util.Map ints
Class
-object is key, the maximum-value is the value
protected static java.util.List typesBySize
Constructor Detail |
public MathUtils()
Method Detail |
public static java.math.BigDecimal toBigDecimal(java.lang.Number n)
public static java.math.BigInteger toBigInteger(java.lang.Number n)
public static boolean isZero(java.lang.Number n)
public static boolean isInteger(java.lang.Number n)
public static java.lang.Number wrapPrimitive(long value, java.lang.Class type)
private static java.lang.Number wrapPrimitive(long value, java.lang.Number op1, java.lang.Number op2)
private static int findCalculationBase(java.lang.Number op1, java.lang.Number op2)
public static java.lang.Number add(java.lang.Number op1, java.lang.Number op2)
public static java.lang.Number subtract(java.lang.Number op1, java.lang.Number op2)
public static java.lang.Number multiply(java.lang.Number op1, java.lang.Number op2)
public static java.lang.Number divide(java.lang.Number op1, java.lang.Number op2)
public static java.lang.Number modulo(java.lang.Number op1, java.lang.Number op2) throws java.lang.ArithmeticException
java.lang.ArithmeticException
- If at least one parameter is a BigDecimalpublic static int compare(java.lang.Number op1, java.lang.Number op2)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |