NumericValue is an abstract superclass for IntegerValue, DecimalValue,
FloatValue, and DoubleValue
ceiling
public abstract NumericValue ceiling()
Implement the XPath ceiling() function
- a value, of the same type as that supplied, rounded towards
plus infinity
compareTo
public int compareTo(Object other)
Compare the value to another numeric value
other
- The other numeric value
- -1 if this one is the lower, 0 if they are numerically equal,
+1 if this one is the higher, or if either value is NaN. Where NaN values are
involved, they should be handled by the caller before invoking this method.
compareTo
public abstract int compareTo(long other)
Compare the value to a long
other
- the value to be compared with
- -1 if this is less, 0 if this is equal, +1 if this is greater or if this is NaN
equals
public final boolean equals(Object other)
The equals() function compares numeric equality among integers, decimals, floats, doubles, and
their subtypes
- equals in interface AtomicValue
other
- the value to be compared with this one
- true if the two values are numerically equal
floor
public abstract NumericValue floor()
Implement the XPath floor() function
- a value, of the same type as that supplied, rounded towards
minus infinity
getDecimalValue
public BigDecimal getDecimalValue()
throws XPathException
Get the numeric value converted to a decimal
- a decimal representing this numeric value;
XPathException
- if the value cannot be converted, for example if it is NaN or infinite
getDoubleValue
public double getDoubleValue()
Get the numeric value as a double
- A double representing this numeric value; NaN if it cannot be
converted
getFloatValue
public float getFloatValue()
Get the numeric value converted to a float
- a float representing this numeric value; NaN if it cannot be converted
getXPathComparable
public Object getXPathComparable(boolean ordered,
StringCollator collator,
XPathContext context)
Get a Comparable value that implements the XPath ordering comparison semantics for this value.
Returns null if the value is not comparable according to XPath rules. The default implementation
returns null. This is overridden for types that allow ordered comparisons in XPath: numeric, boolean,
string, date, time, dateTime, yearMonthDuration, dayTimeDuration, and anyURI.
- getXPathComparable in interface AtomicValue
ordered
- collator
- context
-
hashCode
public abstract int hashCode()
hashCode() must be the same for two values that are equal. One
way to ensure this is to convert the value to a double, and take the
hashCode of the double. But this is expensive in the common case where
we are comparing integers. So we adopt the rule: for values that are in
the range of a Java Integer, we use the int value as the hashcode. For
values outside that range, we convert to a double and take the hashCode of
the double. This method needs to have a compatible implementation in
each subclass.
- the hash code of the numeric value
isInteger
public static boolean isInteger(AtomicValue value)
Test whether a value is an integer (an instance of a subtype of xs:integer)
value
- the value being tested
- true if the value is an instance of xs:integer or a type derived therefrom
isWholeNumber
public abstract boolean isWholeNumber()
Determine whether the value is a whole number, that is, whether it compares
equal to some integer
- true if the value is a whole number
longValue
public long longValue()
throws XPathException
Return the numeric value as a Java long.
- the numeric value as a Java long. This performs truncation
towards zero.
negate
public abstract NumericValue negate()
Change the sign of the number
- a value, of the same type as the original, with its sign
inverted
parseNumber
public static NumericValue parseNumber(String in)
Get a numeric value by parsing a string; the type of numeric value depends
on the lexical form of the string, following the rules for XPath numeric
literals.
- a NumericValue representing the value of the string. Returns Double.NaN if the
value cannot be parsed as a string.
promote
public static ItemType promote(ItemType v1,
ItemType v2,
TypeHierarchy typeHierarchy)
Identify lowest common supertype of two numeric values for promotion purposes
v1
- the item type of the first operandv2
- the item type of the second operandtypeHierarchy
- the type hierarchy cache
- the item type that should be used for arithmetic between
operands of the two specified item types
round
public abstract NumericValue round()
Implement the XPath round() function
- a value, of the same type as that supplied, rounded towards the
nearest whole number (0.5 rounded up)
roundHalfToEven
public abstract NumericValue roundHalfToEven(int scale)
Implement the XPath 2.0 round-half-to-even() function
scale
- the decimal position for rounding: e.g. 2 rounds to a
multiple of 0.01, while -2 rounds to a multiple of 100
- a value, of the same type as the original, rounded towards the
nearest multiple of 10**(-scale), with rounding towards the nearest
even number if two values are equally near
signum
public abstract double signum()
Determine whether the value is negative, zero, or positive
- -1 if negative, 0 if zero (including negative zero), +1 if positive, NaN if NaN
toString
public String toString()
Produce a string representation of the value
- toString in interface AtomicValue
- The result of casting the number to a string