Class ArithmeticEngine

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ArithmeticEngine.BigDecimalEngine
      This is the default arithmetic engine in FreeMarker.
      static class  ArithmeticEngine.ConservativeEngine
      An arithmetic engine that conservatively widens the operation arguments to extent that they can hold the result of the operation.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract java.lang.Number add​(java.lang.Number first, java.lang.Number second)  
      abstract int compareNumbers​(java.lang.Number first, java.lang.Number second)  
      abstract java.lang.Number divide​(java.lang.Number first, java.lang.Number second)  
      abstract java.lang.Number modulus​(java.lang.Number first, java.lang.Number second)  
      abstract java.lang.Number multiply​(java.lang.Number first, java.lang.Number second)  
      void setMaxScale​(int maxScale)
      Sets the maximal scale to use when multiplying BigDecimal numbers.
      void setMinScale​(int minScale)
      Sets the minimal scale to use when dividing BigDecimal numbers.
      void setRoundingPolicy​(int roundingPolicy)  
      abstract java.lang.Number subtract​(java.lang.Number first, java.lang.Number second)  
      abstract java.lang.Number toNumber​(java.lang.String s)
      Should be able to parse all FTL numerical literals, Java Double toString results, and XML Schema numbers.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • BIGDECIMAL_ENGINE

        public static final ArithmeticEngine.BigDecimalEngine BIGDECIMAL_ENGINE
        Arithmetic engine that converts all numbers to BigDecimal and then operates on them, and also keeps the result as a BigDecimal. This is FreeMarker's default arithmetic engine.
      • CONSERVATIVE_ENGINE

        public static final ArithmeticEngine.ConservativeEngine CONSERVATIVE_ENGINE
        Arithmetic engine that uses (more-or-less) the widening conversions of Java language to determine the type of result of operation, instead of converting everything to BigDecimal up front.
      • minScale

        protected int minScale
      • maxScale

        protected int maxScale
      • roundingPolicy

        protected int roundingPolicy
    • Constructor Detail

      • ArithmeticEngine

        public ArithmeticEngine()
    • Method Detail

      • toNumber

        public abstract java.lang.Number toNumber​(java.lang.String s)
        Should be able to parse all FTL numerical literals, Java Double toString results, and XML Schema numbers. This means these should be parsed successfully, except if the arithmetical engine couldn't support the resulting value anyway (such as NaN, infinite, even non-integers): -123.45, 1.5e3, 1.5E3, 0005, +0, -0, NaN, INF, -INF, Infinity, -Infinity.
      • setMinScale

        public void setMinScale​(int minScale)
        Sets the minimal scale to use when dividing BigDecimal numbers. Default value is 12.
      • setMaxScale

        public void setMaxScale​(int maxScale)
        Sets the maximal scale to use when multiplying BigDecimal numbers. Default value is 100.
      • setRoundingPolicy

        public void setRoundingPolicy​(int roundingPolicy)