Class FormatNumber2

    • Constructor Detail

      • FormatNumber2

        public FormatNumber2()
    • Method Detail

      • fixup

        public void fixup​(DecimalSymbols dfs)
        Fixup: this is a callback from the DecimalFormatManager used once the xsl:decimal-format element is identified
      • evaluateAsString

        public java.lang.String evaluateAsString​(XPathContext context)
                                          throws XPathException
        Evaluate in a context where a string is wanted
        Specified by:
        evaluateAsString in interface Expression
        Overrides:
        evaluateAsString in class ComputedExpression
        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
        Specified by:
        evaluateItem in interface Expression
        Overrides:
        evaluateItem in class ComputedExpression
        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