net.sf.saxon.functions

## Class FormatNumber

- java.lang.Object
- - net.sf.saxon.expr.Expression
  - - net.sf.saxon.expr.FunctionCall
    - - net.sf.saxon.functions.SystemFunctionCall
      - - net.sf.saxon.functions.FormatNumber

- All Implemented Interfaces:
    Serializable, SourceLocator, LocationProvider, SaxonLocator, Callable, InstructionInfo, Locator

      public class FormatNumber
      extends SystemFunctionCall
      implements Callable

  XSLT 2.0 implementation of format-number() function - removes the dependence on the JDK.
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.functions.SystemFunctionCall

      `operation`

    - ### Fields inherited from class net.sf.saxon.expr.FunctionCall

      `argument`

    - ### Fields inherited from class net.sf.saxon.expr.Expression

      `EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, INHERITED_CONTEXT, INSPECTION_CONTEXT, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, NAVIGATION_CONTEXT, NODE_VALUE_CONTEXT, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, W3C_CONSUMING, W3C_FREE_RANGING, W3C_GROUP_CONSUMING, W3C_MOTIONLESS, WATCH_METHOD`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FormatNumber()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static BigDecimal` | `adjustToDecimal(double value, int precision)` Convert a double to a BigDecimal.
    `void` | `bindStaticContext(StaticContext env)` Bind aspects of the static context on which the particular function depends
    `Sequence` | `call(XPathContext context, Sequence[] arguments)` Call the Callable.
    `void` | `checkArguments(ExpressionVisitor visitor)` Method called during static type checking
    `Expression` | `copy()` Copy an expression.
    `boolean` | `equals(Object o)` Determine whether two expressions are equivalent
    `CharSequence` | `evaluateAsString(XPathContext context)` Evaluate in a context where a string is wanted
    `StringValue` | `evaluateItem(XPathContext c)` Evaluate in a general context
    `Expression` | `preEvaluate(ExpressionVisitor visitor)` preEvaluate: this method suppresses compile-time evaluation by doing nothing.

    - ### Methods inherited from class net.sf.saxon.functions.SystemFunctionCall

      `addContextDocumentArgument, addDocToPathMap, computeCardinality, computeSpecialProperties, equalOrNull, getContextNode, getConvertingCallable, getDefaultArgumentNode, getDetails, getErrorCodeForTypeErrors, getFunctionItemType, getImplementationMethod, getItemType, getOperation, getRequiredType, iterateSubExpressionInfo, makeSystemFunction, optimize, setDetails, useContextItemAsDefault`

    - ### Methods inherited from class net.sf.saxon.expr.FunctionCall

      `addExternalFunctionCallToPathMap, checkArgumentCount, explain, getArguments, getDisplayName, getExpressionName, getFunctionName, getNumberOfArguments, hashCode, iterateSubExpressions, promote, replaceSubExpression, setArguments, setFunctionName, simplify, simplifyArguments, toString, typeCheck`

    - ### Methods inherited from class net.sf.saxon.expr.Expression

      `addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getEvaluationMethod, getExecutable, getExpressionCompiler, getHostLanguage, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getStreamability, getStreamingAdjunct, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterate, iterateEvents, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toPattern, toStreamingPattern, typeError`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### FormatNumber

          public FormatNumber()

  - ### Method Detail

    - #### bindStaticContext

          public void bindStaticContext(StaticContext env)
                                 throws XPathException

      Bind aspects of the static context on which the particular function depends
      Overrides:
        `bindStaticContext` in class `SystemFunctionCall`
      Parameters:
        `env` - the static context of the function call
      Throws:
        `XPathException` - if execution with this static context will inevitably fail

    - #### checkArguments

          public void checkArguments(ExpressionVisitor visitor)
                              throws XPathException

      Description copied from class: `SystemFunctionCall`
      Method called during static type checking
      Overrides:
        `checkArguments` in class `SystemFunctionCall`
      Parameters:
        `visitor` - the expression visitor
      Throws:
        `XPathException` - if the arguments are incorrect

    - #### 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 `SystemFunctionCall`
      Returns:
        the copy of the original expression

    - #### equals

          public boolean equals(Object o)

      Determine whether two expressions are equivalent
      Overrides:
        `equals` in class `SystemFunctionCall`

    - #### evaluateAsString

          public 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 StringValue 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 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

    - #### call

          public Sequence call(XPathContext context,
                      Sequence[] arguments)
                        throws XPathException

      Description copied from interface: `Callable`
      Call the Callable.
      Specified by:
        `call` in interface `Callable`
      Parameters:
        `context` - the dynamic evaluation context
        `arguments` - the values of the arguments, supplied as Sequences.

        Generally it is advisable, if calling iterate() to process a supplied sequence, to call it only once; if the value is required more than once, it should first be converted to a `GroundedValue` by calling the utility methd SequenceTool.toGroundedValue().

        If the expected value is a single item, the item should be obtained by calling Sequence.head(): it cannot be assumed that the item will be passed as an instance of `Item` or `AtomicValue`.

        It is the caller's responsibility to perform any type conversions required to convert arguments to the type expected by the callee. An exception is where this Callable is explicitly an argument-converting wrapper around the original Callable.

      Returns:
        the result of the evaluation, in the form of a Sequence. It is the responsibility of the callee to ensure that the type of result conforms to the expected result type.
      Throws:
        `XPathException` - if a dynamic error occurs during the evaluation of the expression

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.