## com.icl.saxon.functions
Class FormatNumber

    java.lang.Object
      |
      +--com.icl.saxon.expr.Expression
            |
            +--com.icl.saxon.expr.Function
                  |
                  +--com.icl.saxon.functions.FormatNumber

public class FormatNumber
extends Function

Field Summary

Fields inherited from class com.icl.saxon.expr.Function
`argument`

Fields inherited from class com.icl.saxon.expr.Expression
`staticContext`

Constructor Summary
`FormatNumber()`

Method Summary
`Value` `evaluate(Context c)` Evaluate in a general context
`java.lang.String` `evaluateAsString(Context context)` Evaluate in a context where a string is wanted
`java.lang.String` `formatNumber(double n, java.lang.String format, java.text.DecimalFormatSymbols dfs)` Here is the method that does the work.
`int` `getDataType()` Determine the data type of the exprEssion
`int` `getDependencies()` Determine the dependencies
`java.lang.String` `getName()` Get the name of the function.
`Expression` `reduce(int dep, Context c)` Reduce the dependencies
`Expression` `simplify()` Simplify and validate

Methods inherited from class com.icl.saxon.expr.Function
`addArgument, checkArgumentCount, display, getNumberOfArguments`

Methods inherited from class com.icl.saxon.expr.Expression
`containsReferences, enumerate, evaluateAsBoolean, evaluateAsNodeSet, evaluateAsNumber, getStaticContext, indent, isContextDocumentNodeSet, make, outputStringValue, setStaticContext, usesCurrent`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### FormatNumber

    public FormatNumber()

Method Detail

### getName

    public java.lang.String getName()

  Description copied from class: `Function`
  Get the name of the function. This method must be implemented in all subclasses.

  Specified by:
    `getName` in class `Function`
  Returns:
    the name of the function, as used in XSL expressions, but excluding its namespace prefix

### getDataType

    public int getDataType()

  Determine the data type of the exprEssion

  Specified by:
    `getDataType` in class `Expression`
  Returns:
    Value.STRING

### simplify

    public Expression simplify()
                        throws XPathException

  Simplify and validate

  Overrides:
    `simplify` in class `Expression`
  Returns:
    the simplified expression
    `XPathException`

### evaluateAsString

    public java.lang.String evaluateAsString(Context 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
    `XPathException`

### evaluate

    public Value evaluate(Context c)
                   throws XPathException

  Evaluate in a general context

  Specified by:
    `evaluate` in class `Expression`
  Parameters:
    `c` - The context in which the expression is to be evaluated
  Returns:
    the value of the expression, evaluated in the current context
    `XPathException`

### formatNumber

    public java.lang.String formatNumber(double n,
                                         java.lang.String format,
                                         java.text.DecimalFormatSymbols dfs)
                                  throws XPathException

  Here is the method that does the work. It needs to be synchronized because it remembers information from one invocation to the next; it doesn't matter if these are in different threads but it can't be interrupted. The reason for remembering information is that getting a new DecimalFormatSymbols each time is incredibly expensive, especially with the Microsoft Java VM. Actually the synchronization is unnecessary if there is a bound Controller.

    `XPathException`

### getDependencies

    public int getDependencies()

  Determine the dependencies

  Specified by:
    `getDependencies` in class `Expression`

### reduce

    public Expression reduce(int dep,
                             Context c)
                      throws XPathException

  Reduce the dependencies

  Specified by:
    `reduce` in class `Expression`
  Parameters:
    `dep` - The dependencies to be removed, e.g. Context.VARIABLES
    `c` - The context to be used for the partial evaluation
  Returns:
    a new expression (or Value) that does not have any of the specified dependencies
    `XPathException`