类 MathTool


@DefaultKey("math") public class MathTool extends FormatConfig

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>
 

版本:
$Revision: 696463 $ $Date: 2008-09-17 14:39:04 -0700 (Wed, 17 Sep 2008) $
作者:
Nathan Bubna, Leon Messerschmidt
  • 构造器详细资料

    • MathTool

      public MathTool()
  • 方法详细资料

    • add

      public Number add(Object num1, Object num2)
    • sub

      public Number sub(Object num1, Object num2)
    • mul

      public Number mul(Object num1, Object num2)
    • div

      public Number div(Object num1, Object num2)
    • max

      public Number max(Object num1, Object num2)
    • min

      public Number min(Object num1, Object num2)
    • add

      public Number add(Object... nums)
      参数:
      nums - the numbers to be added
      返回:
      the sum of the numbers or null if they're invalid
      另请参阅:
    • sub

      public Number sub(Object... nums)
      参数:
      nums - the numbers to be subtracted
      返回:
      the difference of the numbers (subtracted in order) or null if they're invalid
      另请参阅:
    • mul

      public Number mul(Object... nums)
      参数:
      nums - the numbers to be multiplied
      返回:
      the product of the numbers or null if they're invalid
      另请参阅:
    • div

      public Number div(Object... nums)
      参数:
      nums - the numbers to be divided
      返回:
      the quotient of the numbers or null if they're invalid or if any denominator equals zero
      另请参阅:
    • pow

      public Number pow(Object num1, Object num2)
      参数:
      num1 - the first number
      num2 - the second number
      返回:
      the first number raised to the power of the second or null if they're invalid
      另请参阅:
    • idiv

      public Integer idiv(Object num1, Object num2)
      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'.

      参数:
      num1 - the first number
      num2 - the second number
      返回:
      the result of performing integer division on the operands.
      另请参阅:
    • mod

      public Integer mod(Object num1, Object num2)
      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'.

      参数:
      num1 - the first number
      num2 - the second number
      返回:
      the result of performing integer modulus on the operands.
      另请参阅:
    • max

      public Number max(Object... nums)
      参数:
      nums - the numbers to be searched
      返回:
      the largest of the numbers or null if they're invalid
      另请参阅:
    • min

      public Number min(Object... nums)
      参数:
      nums - the numbers to be searched
      返回:
      the smallest of the numbers or null if they're invalid
      另请参阅:
    • abs

      public Number abs(Object num)
      参数:
      num - the number
      返回:
      the absolute value of the number or null if it's invalid
      另请参阅:
    • ceil

      public Integer ceil(Object num)
      参数:
      num - the number
      返回:
      the smallest integer that is not less than the given number
    • floor

      public Integer floor(Object num)
      参数:
      num - the number
      返回:
      the integer portion of the number
    • round

      public Integer round(Object num)
      Rounds a number to the nearest whole Integer
      参数:
      num - the number to round
      返回:
      the number rounded to the nearest whole Integer or null if it's invalid
      另请参阅:
    • roundTo

      public Double roundTo(Object decimals, Object num)
      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 use round(java.lang.Object), as that will return an Integer rather than a Double.
      参数:
      decimals - the number of decimal places
      num - the number to round
      返回:
      the value rounded to the specified number of decimal places or null if it's invalid
      另请参阅:
    • getRandom

      public Double getRandom()
      返回:
      a pseudo-random Double greater than or equal to 0.0 and less than 1.0
      另请参阅:
    • random

      public Number random(Object num1, Object num2)
      This returns a random Number within 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 a Double will be returned.
      参数:
      num1 - the first number
      num2 - the second number
      返回:
      a pseudo-random Number greater than or equal to the first number and less than the second
      另请参阅:
    • toInteger

      public Integer toInteger(Object num)
      Converts an object with a numeric value into an Integer Valid formats are Number or a String representation of a number
      参数:
      num - the number to be converted
      返回:
      a Integer representation of the number or null if it's invalid
    • toDouble

      public Double toDouble(Object num)
      Converts an object with a numeric value into a Double Valid formats are Number or a String representation of a number
      参数:
      num - the number to be converted
      返回:
      a Double representation of the number or null if it's invalid
    • toNumber

      public Number toNumber(Object num)
      Converts an object with a numeric value into a Number Valid formats are Number or a String representation of a number. Note that this does not handle localized number formats. Use the NumberTool to handle such conversions.
      参数:
      num - the number to be converted
      返回:
      a Number representation of the number or null if it's invalid
    • matchType

      protected Number matchType(Number in, double out)
      另请参阅:
    • matchType

      protected Number matchType(Number in1, Number in2, double out)
      另请参阅:
    • matchType

      protected Number matchType(double out, Number... in)
      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.
    • hasFloatingPoint

      protected boolean hasFloatingPoint(String value)
    • parseNumber

      @Deprecated protected Number parseNumber(String value)
      已过时。
    • getTotal

      public Number getTotal(Collection collection, String field)
      Get the sum of the values from a list
      参数:
      collection - A collection containing Java beans
      field - A Java Bean field for the objects in collection that will return a number.
      返回:
      The sum of the values in collection.
    • getAverage

      public Number getAverage(Collection collection, String field)
      Get the average of the values from a list
      参数:
      collection - A collection containing Java beans
      field - A Java Bean field for the objects in collection that will return a number.
      返回:
      The average of the values in collection.
    • getTotal

      public Number getTotal(Object[] array, String field)
      Get the sum of the values from a list
      参数:
      array - An array containing Java beans
      field - A Java Bean field for the objects in array that will return a number.
      返回:
      The sum of the values in array.
    • getAverage

      public Number getAverage(Object[] array, String field)
      Get the sum of the values from a list
      参数:
      array - A collection containing Java beans
      field - A Java Bean field for the objects in array that will return a number.
      返回:
      The sum of the values in array.
    • getTotal

      public Number getTotal(Collection collection)
      Get the sum of the values
      参数:
      collection - A collection containing numeric values
      返回:
      The sum of the values in collection.
    • getAverage

      public Number getAverage(Collection collection)
      Get the average of the values
      参数:
      collection - A collection containing number values
      返回:
      The average of the values in collection.
    • getTotal

      public Number getTotal(Object... array)
      Get the sum of the values
      参数:
      array - An array containing number values
      返回:
      The sum of the values in array.
    • getAverage

      public Number getAverage(Object... array)
      Get the average of the values
      参数:
      array - An array containing number values
      返回:
      The sum of the values in array.
    • getTotal

      public Number getTotal(double... values)
      Get the sum of the values
      参数:
      values - The list of double values to add up.
      返回:
      The sum of the arrays
    • getAverage

      public Number getAverage(double... values)
      Get the average of the values in an array of double values
      参数:
      values - The list of double values
      返回:
      The average of the array of values
    • getTotal

      public Number getTotal(long... values)
      Get the sum of the values
      参数:
      values - The list of long values to add up.
      返回:
      The sum of the arrays
    • getAverage

      public Number getAverage(long... values)
      Get the average of the values in an array of long values
      参数:
      values - The list of long values
      返回:
      The average of the array of values