net.sf.saxon.value

Class DecimalValue

Implemented Interfaces:
Comparable, ConversionResult, GroundedValue, Item, PullEvent, Serializable, SequenceIterable, ValueRepresentation

public final class DecimalValue
extends NumericValue

A decimal value

Nested Class Summary

protected static class
DecimalValue.DecimalComparable

Field Summary

static BigDecimal
BIG_DECIMAL_ONE
static BigDecimal
BIG_DECIMAL_ONE_MILLION
static BigInteger
BIG_INTEGER_TEN
static int
DIVIDE_PRECISION
static DecimalValue
ONE
static DecimalValue
ZERO

Fields inherited from class net.sf.saxon.value.AtomicValue

typeLabel

Fields inherited from class net.sf.saxon.value.Value

EMPTY_CLASS_ARRAY, INDETERMINATE_ORDERING

Fields inherited from interface net.sf.saxon.om.ValueRepresentation

EMPTY_VALUE_ARRAY

Constructor Summary

DecimalValue(BigDecimal value)
Constructor supplying a BigDecimal
DecimalValue(double in)
Constructor supplying a double
DecimalValue(long in)
Constructor supplying a long integer

Method Summary

static boolean
castableAsDecimal(CharSequence in)
Test whether a string is castable to a decimal value
NumericValue
ceiling()
Implement the XPath ceiling() function
int
compareTo(Object other)
Compare the value to another numeric value
int
compareTo(long other)
Compare the value to a long
ConversionResult
convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert to target data type
Object
convertToJava(Class target, XPathContext context)
Convert to Java object (for passing to external functions)
AtomicValue
copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
static FastStringBuffer
decimalToString(BigDecimal value, FastStringBuffer fsb)
Convert a decimal value to a string, using the XPath rules for formatting
boolean
effectiveBooleanValue()
NumericValue
floor()
Implement the XPath floor() function
CharSequence
getCanonicalLexicalRepresentation()
Get the canonical lexical representation as defined in XML Schema.
BigDecimal
getDecimalValue()
Get the value
BuiltInAtomicType
getPrimitiveType()
Determine the primitive type of the value.
Comparable
getSchemaComparable()
Get an object that implements XML Schema comparison semantics
String
getStringValue()
Get the value as a String
CharSequence
getStringValueCS()
Get the value of the item as a CharSequence.
int
hashCode()
Get the hashCode.
boolean
isWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer
static ConversionResult
makeDecimalValue(CharSequence in, boolean validate)
Factory method to construct a DecimalValue from a string
NumericValue
negate()
Negate the value
NumericValue
round()
Implement the XPath round() function
NumericValue
roundHalfToEven(int scale)
Implement the XPath round-half-to-even() function
double
signum()
Determine whether the value is negative, zero, or positive

Methods inherited from class net.sf.saxon.value.NumericValue

ceiling, compareTo, compareTo, equals, floor, getDecimalValue, getDoubleValue, getFloatValue, getXPathComparable, hashCode, isInteger, isWholeNumber, longValue, negate, parseNumber, promote, round, roundHalfToEven, signum, toString

Methods inherited from class net.sf.saxon.value.AtomicValue

asAtomic, checkPermittedContents, convert, convert, convertPrimitive, copyAsSubType, effectiveBooleanValue, equals, getCardinality, getComponent, getItemType, getLength, getPrimitiveType, getSchemaComparable, getStringValue, getStringValueCS, getTypeLabel, getTypedValue, getXPathComparable, isNaN, itemAt, iterate, process, setTypeLabel, subsequence, toString

Methods inherited from class net.sf.saxon.value.Value

asItem, asItem, asIterator, asValue, checkPermittedContents, convertJavaObjectToXPath, convertToJava, convertToJava, effectiveBooleanValue, equals, fromItem, getCanonicalLexicalRepresentation, getCardinality, getItemType, getIterator, getLength, getSchemaComparable, getStringValue, getStringValueCS, itemAt, iterate, iterate, makeQNameValue, process, reduce, stringToNumber, toString

Field Details

BIG_DECIMAL_ONE

public static final BigDecimal BIG_DECIMAL_ONE

BIG_DECIMAL_ONE_MILLION

public static final BigDecimal BIG_DECIMAL_ONE_MILLION

BIG_INTEGER_TEN

public static final BigInteger BIG_INTEGER_TEN

DIVIDE_PRECISION

public static final int DIVIDE_PRECISION
Field Value:
18

ONE

public static final DecimalValue ONE

ZERO

public static final DecimalValue ZERO

Constructor Details

DecimalValue

public DecimalValue(BigDecimal value)
Constructor supplying a BigDecimal
Parameters:
value - the value of the DecimalValue

DecimalValue

public DecimalValue(double in)
            throws ValidationException
Constructor supplying a double
Parameters:
in - the value of the DecimalValue

DecimalValue

public DecimalValue(long in)
Constructor supplying a long integer
Parameters:
in - the value of the DecimalValue

Method Details

castableAsDecimal

public static boolean castableAsDecimal(CharSequence in)
Test whether a string is castable to a decimal value
Parameters:
in - the string to be tested
Returns:
true if the string has the correct format for a decimal

ceiling

public NumericValue ceiling()
Implement the XPath ceiling() function
Overrides:
ceiling in interface NumericValue

compareTo

public int compareTo(Object other)
Compare the value to another numeric value
Overrides:
compareTo in interface NumericValue

compareTo

public int compareTo(long other)
Compare the value to a long
Overrides:
compareTo in interface NumericValue
Parameters:
other - the value to be compared with
Returns:
-1 if this is less, 0 if this is equal, +1 if this is greater or if this is NaN

convertPrimitive

public ConversionResult convertPrimitive(BuiltInAtomicType requiredType,
                                         boolean validate,
                                         XPathContext context)
Convert to target data type
Overrides:
convertPrimitive in interface AtomicValue

convertToJava

public Object convertToJava(Class target,
                            XPathContext context)
            throws XPathException
Convert to Java object (for passing to external functions)
Overrides:
convertToJava in interface Value

copyAsSubType

public AtomicValue copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
Overrides:
copyAsSubType in interface AtomicValue
Parameters:
typeLabel - the type label of the new copy. The caller is responsible for checking that the value actually conforms to this type.

decimalToString

public static FastStringBuffer decimalToString(BigDecimal value,
                                               FastStringBuffer fsb)
Convert a decimal value to a string, using the XPath rules for formatting
Parameters:
value - the decimal value to be converted
fsb - the FastStringBuffer to which the value is to be appended
Returns:
the supplied FastStringBuffer, suitably populated

effectiveBooleanValue

public boolean effectiveBooleanValue()
Overrides:
effectiveBooleanValue in interface AtomicValue

floor

public NumericValue floor()
Implement the XPath floor() function
Overrides:
floor in interface NumericValue

getCanonicalLexicalRepresentation

public CharSequence getCanonicalLexicalRepresentation()
Get the canonical lexical representation as defined in XML Schema. This is not always the same as the result of casting to a string according to the XPath rules. For xs:decimal, the canonical representation always contains a decimal point.
Overrides:
getCanonicalLexicalRepresentation in interface Value

getDecimalValue

public BigDecimal getDecimalValue()
Get the value
Overrides:
getDecimalValue in interface NumericValue

getPrimitiveType

public BuiltInAtomicType getPrimitiveType()
Determine the primitive type of the value. This delivers the same answer as getItemType().getPrimitiveItemType(). The primitive types are the 19 primitive types of XML Schema, plus xs:integer, xs:dayTimeDuration and xs:yearMonthDuration, and xs:untypedAtomic. For external objects, the result is AnyAtomicType.
Overrides:
getPrimitiveType in interface AtomicValue

getSchemaComparable

public Comparable getSchemaComparable()
Get an object that implements XML Schema comparison semantics
Overrides:
getSchemaComparable in interface AtomicValue

getStringValue

public String getStringValue()
Get the value as a String
Specified by:
getStringValue in interface Item
getStringValue in interface ValueRepresentation
Overrides:
getStringValue in interface AtomicValue
Returns:
a String representation of the value

getStringValueCS

public CharSequence getStringValueCS()
Get the value of the item as a CharSequence. This is in some cases more efficient than the version of the method that returns a String.
Specified by:
getStringValueCS in interface Item
getStringValueCS in interface ValueRepresentation
Overrides:
getStringValueCS in interface AtomicValue

hashCode

public int hashCode()
Get the hashCode. This must conform to the rules for other NumericValue hashcodes
Overrides:
hashCode in interface NumericValue

isWholeNumber

public boolean isWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer
Overrides:
isWholeNumber in interface NumericValue

makeDecimalValue

public static ConversionResult makeDecimalValue(CharSequence in,
                                                boolean validate)
Factory method to construct a DecimalValue from a string
Parameters:
in - the value of the DecimalValue
validate - true if validation is required; false if the caller knows that the value is valid
Returns:
the required DecimalValue if the input is valid, or a ValidationFailure encapsulating the error message if not.

negate

public NumericValue negate()
Negate the value
Overrides:
negate in interface NumericValue

round

public NumericValue round()
Implement the XPath round() function
Overrides:
round in interface NumericValue

roundHalfToEven

public NumericValue roundHalfToEven(int scale)
Implement the XPath round-half-to-even() function
Overrides:
roundHalfToEven in interface NumericValue

signum

public double signum()
Determine whether the value is negative, zero, or positive
Overrides:
signum in interface NumericValue
Returns:
-1 if negative, 0 if zero, +1 if positive, NaN if NaN