Class MathTool
java.lang.Object
org.apache.velocity.tools.generic.SafeConfig
org.apache.velocity.tools.generic.LocaleConfig
org.apache.velocity.tools.generic.FormatConfig
org.apache.velocity.tools.generic.MathTool
- All Implemented Interfaces:
Serializable
@DefaultKey("math")
@ValidScope("application")
public class MathTool
extends FormatConfig
implements Serializable
Tool for performing math in Velocity.
Some things should be noted here:
- This class does not have methods that take primitives. This is simply because Velocity wraps all primitives for us automagically.
- No null pointer, number format, or divide by zero exceptions are thrown here. This is because such exceptions thrown in template halt rendering. It should be sufficient debugging feedback that Velocity will render the reference literally. (e.g. $math.div(1, 0) renders as '$math.div(1, 0)')
Example tools.xml config:
<tools>
<toolbox scope="application">
<tool class="org.apache.velocity.tools.generic.MathTool"/>
</toolbox>
</tools>
- Version:
- $Revision$ $Date$
- Author:
- Nathan Bubna, Leon Messerschmidt
- See Also:
-
Field Summary
Fields inherited from class FormatConfig
DEFAULT_FORMAT, FORMAT_KEYFields inherited from class LocaleConfig
DEFAULT_LOCALEFields inherited from class SafeConfig
LOCK_CONFIG_KEY, log, LOGGER_NAME_KEY, SAFE_MODE_KEY, USE_CLASS_LOGGER_KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbitwiseAnd(Object... nums) Bitwise AndbitwiseAnd(Object num1, Object num2) Bitwise OrbitwiseXOr(Object... nums) Bitwise XOrbitwiseXOr(Object num1, Object num2) getAverage(double... values) Get the average of the values in an array of double valuesgetAverage(long... values) Get the average of the values in an array of long valuesgetAverage(Object... array) Get the average of the valuesgetAverage(Object[] array, String field) Get the sum of the values from a listgetAverage(Collection collection) Get the average of the valuesgetAverage(Collection collection, String field) Get the average of the values from a listgetTotal(double... values) Get the sum of the valuesgetTotal(long... values) Get the sum of the valuesGet the sum of the valuesGet the sum of the values from a listgetTotal(Collection collection) Get the sum of the valuesgetTotal(Collection collection, String field) Get the sum of the values from a listprotected booleanhasFloatingPoint(String value) Does integer division on the int values of the specified numbers.protected NumberTakes the original argument(s) and returns the resulting value as an instance of the best matching type (Integer, Long, or Double).protected Numberprotected NumberDoes integer modulus on the int values of the specified numbers.This returns a randomNumberwithin the specified range.Rounds a number to the nearest whole IntegerRounds a number to the specified number of decimal places.Deprecated.Deprecated.useNumberTool.toNumber(Object).intValue()Deprecated.useNumberTool.toNumber(Object).longValue()Deprecated.Methods inherited from class FormatConfig
configure, getFormat, setFormatMethods inherited from class LocaleConfig
getLocale, setLocale, toLocaleMethods inherited from class SafeConfig
configure, getLog, initLogger, isConfigLocked, isSafeMode, setLockConfig, setSafeMode
-
Constructor Details
-
MathTool
public MathTool()
-
-
Method Details
-
add
-
sub
-
mul
-
div
-
max
-
min
-
bitwiseOr
-
bitwiseAnd
-
bitwiseXOr
-
add
-
sub
-
mul
-
div
-
pow
-
idiv
Does integer division on the int values of the specified numbers.So, $math.idiv('5.1',3) will return '1', and $math.idiv(6,'3.9') will return '2'.
- Parameters:
num1- the first numbernum2- the second number- Returns:
- the result of performing integer division on the operands.
- See Also:
-
mod
Does integer modulus on the int values of the specified numbers.So, $math.mod('5.1',3) will return '2', and $math.mod(6,'3.9') will return '0'.
- Parameters:
num1- the first numbernum2- the second number- Returns:
- the result of performing integer modulus on the operands.
- See Also:
-
bitwiseOr
-
bitwiseAnd
-
bitwiseXOr
-
max
-
min
-
abs
-
ceil
-
floor
-
round
-
roundTo
Rounds a number to the specified number of decimal places. This is particulary useful for simple display formatting. If you want to round an number to the nearest integer, it is better to useround(Object), as that will return anIntegerrather than aDouble.- Parameters:
decimals- the number of decimal placesnum- the number to round- Returns:
- the value rounded to the specified number of
decimal places or
nullif it's invalid - See Also:
-
getRandom
-
random
This returns a randomNumberwithin the specified range. The returned value will be greater than or equal to the first number and less than the second number. If both arguments are whole numbers then the returned number will also be, otherwise aDoublewill be returned.- Parameters:
num1- the first numbernum2- the second number- Returns:
- a pseudo-random
Numbergreater than or equal to the first number and less than the second - See Also:
-
toInteger
Deprecated.useNumberTool.toNumber(Object).intValue()Converts an object with a numeric value into an Integer Valid formats areNumberor aStringrepresentation of a number- Parameters:
num- the number to be converted- Returns:
- a
Integerrepresentation of the number ornullif it's invalid
-
toLong
Deprecated.useNumberTool.toNumber(Object).longValue()Converts an object with a numeric value into a Long integer Valid formats areNumberor aStringrepresentation of a number- Parameters:
num- the number to be converted- Returns:
- a
Longinteger representation of the number ornullif it's invalid
-
toDouble
Deprecated.useNumberTool.toNumber(Object).doubleValue()Converts an object with a numeric value into a Double Valid formats areNumberor aStringrepresentation of a number- Parameters:
num- the number to be converted- Returns:
- a
Doublerepresentation of the number ornullif it's invalid
-
toNumber
Deprecated.Converts an object with a numeric value into a Number Valid formats areNumberor aStringrepresentation of a number. Note that this does not handle localized number formats. Use theNumberToolto handle such conversions.- Parameters:
num- the number to be converted- Returns:
- a
Numberrepresentation of the number ornullif it's invalid
-
matchType
-
matchType
-
matchType
Takes the original argument(s) and returns the resulting value as an instance of the best matching type (Integer, Long, or Double). If either an argument or the result is not an integer (i.e. has no decimal when rendered) the result will be returned as a Double. If not and the result is < -2147483648 or > 2147483647, then a Long will be returned. Otherwise, an Integer will be returned.- Parameters:
out- target number valuein- wanted Number classes- Returns:
- wanted Number
-
hasFloatingPoint
- Parameters:
value- target value- Returns:
- wether it contains a decimal separator (non locale-aware for now - TODO)
-
getTotal
Get the sum of the values from a list- Parameters:
collection- A collection containing Java beansfield- A Java Bean field for the objects in collection that will return a number.- Returns:
- The sum of the values in collection.
-
getAverage
Get the average of the values from a list- Parameters:
collection- A collection containing Java beansfield- A Java Bean field for the objects in collection that will return a number.- Returns:
- The average of the values in collection.
-
getTotal
-
getAverage
-
getTotal
Get the sum of the values- Parameters:
collection- A collection containing numeric values- Returns:
- The sum of the values in collection.
-
getAverage
Get the average of the values- Parameters:
collection- A collection containing number values- Returns:
- The average of the values in collection.
-
getTotal
-
getAverage
-
getTotal
Get the sum of the values- Parameters:
values- The list of double values to add up.- Returns:
- The sum of the arrays
-
getAverage
Get the average of the values in an array of double values- Parameters:
values- The list of double values- Returns:
- The average of the array of values
-
getTotal
Get the sum of the values- Parameters:
values- The list of long values to add up.- Returns:
- The sum of the arrays
-
getAverage
Get the average of the values in an array of long values- Parameters:
values- The list of long values- Returns:
- The average of the array of values
-
NumberTool.toNumber(Object).doubleValue()