Class FormatNumber

    • Constructor Detail

      • FormatNumber

        public FormatNumber()
    • Method Detail

      • setNamespaceResolver

        public void setNamespaceResolver​(SavedNamespaceContext savedNamespaceContext)
      • preEvaluate

        public Expression preEvaluate​(ExpressionVisitor visitor)
                               throws XPathException
        preEvaluate: this method suppresses compile-time evaluation by doing nothing. We can't evaluate early because we don't have access to the DecimalFormatManager.
        Overrides:
        preEvaluate in class FunctionCall
        Parameters:
        visitor - the expression visitor
        Returns:
        the result of the early evaluation, or the original expression, or potentially a simplified expression
        Throws:
        XPathException - if evaluation fails
      • copy

        public Expression copy()
        Copy an expression. This makes a deep copy.
        Overrides:
        copy in class SystemFunction
        Returns:
        the copy of the original expression
      • equals

        public boolean equals​(java.lang.Object o)
        Determine whether two expressions are equivalent
        Overrides:
        equals in class SystemFunction
      • evaluateAsString

        public java.lang.CharSequence evaluateAsString​(XPathContext context)
                                                throws XPathException
        Evaluate in a context where a string is wanted
        Overrides:
        evaluateAsString in class Expression
        Parameters:
        context - The context in which the expression is to be evaluated
        Returns:
        the value of the expression, evaluated in the current context. The expression must return a string or (); if the value of the expression is (), this method returns "".
        Throws:
        XPathException - if any dynamic error occurs evaluating the expression
      • evaluateItem

        public Item evaluateItem​(XPathContext c)
                          throws XPathException
        Evaluate in a general context
        Overrides:
        evaluateItem in class Expression
        Parameters:
        c - The context in which the expression is to be evaluated
        Returns:
        the node or atomic value that results from evaluating the expression; or null to indicate that the result is an empty sequence
        Throws:
        XPathException - if any dynamic error occurs evaluating the expression
      • adjustToDecimal

        public static java.math.BigDecimal adjustToDecimal​(double value,
                                                           int precision)
        Convert a double to a BigDecimal. In general there will be several BigDecimal values that are equal to the supplied value, and the one we want to choose is the one with fewest non-zero digits. The algorithm used is rather pragmatic: look for a string of zeroes or nines, try rounding the number down or up as approriate, then convert the adjusted value to a double to see if it's equal to the original: if not, use the original value unchanged.
        Parameters:
        value - the double to be converted
        precision - 2 for a double, 1 for a float
        Returns:
        the result of conversion to a double