| java.lang.Object org.apache.velocity.runtime.parser.node.MathUtils
MathUtils | abstract public class MathUtils (Code) | | 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.
author: Peter Romianowski |
BASE_BIGDECIMAL | final protected static int BASE_BIGDECIMAL(Code) | | |
BASE_BIGINTEGER | final protected static int BASE_BIGINTEGER(Code) | | |
BASE_DOUBLE | final protected static int BASE_DOUBLE(Code) | | |
BASE_FLOAT | final protected static int BASE_FLOAT(Code) | | |
BASE_LONG | final protected static int BASE_LONG(Code) | | The constants are used to determine in which context we have to calculate.
|
DECIMAL_ZERO | final protected static BigDecimal DECIMAL_ZERO(Code) | | A BigDecimal representing the number 0
|
ints | final protected static Map ints(Code) | | The Class -object is key, the maximum-value is the value
|
typesBySize | final protected static List typesBySize(Code) | | The "size" of the number-types - ascending.
|
add | public static Number add(Number op1, Number op2)(Code) | | Add two numbers and return the correct value / type.
Overflow detection is done for integer values (byte, short, int, long) only!
Parameters: op1 - Parameters: op2 - Addition result. |
compare | public static int compare(Number op1, Number op2)(Code) | | Compare two numbers.
Parameters: op1 - Parameters: op2 - 1 if n1 > n2, -1 if n1 < n2 and 0 if equal. |
divide | public static Number divide(Number op1, Number op2)(Code) | | Divide two numbers. The result will be returned as Integer-type if and only if
both sides of the division operator are Integer-types. Otherwise a Float, Double,
or BigDecimal will be returned.
Parameters: op1 - Parameters: op2 - Division result. |
isInteger | public static boolean isInteger(Number n)(Code) | | Test, whether the given object is an integer value
(Byte, Short, Integer, Long, BigInteger)
Parameters: n - True if n is an integer. |
isZero | public static boolean isZero(Number n)(Code) | | Compare the given Number to 0.
Parameters: n - True if number is 0. |
multiply | public static Number multiply(Number op1, Number op2)(Code) | | Multiply two numbers and return the correct value / type.
Overflow detection is done for integer values (byte, short, int, long) only!
Parameters: op1 - Parameters: op2 - Multiplication result. |
subtract | public static Number subtract(Number op1, Number op2)(Code) | | Subtract two numbers and return the correct value / type.
Overflow detection is done for integer values (byte, short, int, long) only!
Parameters: op1 - Parameters: op2 - Subtraction result. |
toBigDecimal | public static BigDecimal toBigDecimal(Number n)(Code) | | Convert the given Number to a BigDecimal
Parameters: n - The number as BigDecimal |
toBigInteger | public static BigInteger toBigInteger(Number n)(Code) | | Convert the given Number to a BigInteger
Parameters: n - The number as BigInteger |
wrapPrimitive | public static Number wrapPrimitive(long value, Class type)(Code) | | Wrap the given primitive into the given class if the value is in the
range of the destination type. If not the next bigger type will be chosen.
Parameters: value - Parameters: type - Number object representing the primitive. |
|
|