net.sf.saxon.value

Class FloatValue

public final class FloatValue extends NumericValue

A numeric (single precision floating point) value
Field Summary
static FloatValueNaN
static FloatValueNEGATIVE_ZERO
static FloatValueONE
static PatternroundablePattern
Regex indicating that a number may be worth rounding
static FloatValueZERO
Constructor Summary
FloatValue(CharSequence val)
Constructor supplying a string
FloatValue(float value)
Constructor supplying a float
FloatValue(float value, AtomicType type)
Constructor supplying a float and an AtomicType, for creating a value that belongs to a user-defined subtype of xs:float.
Method Summary
NumericValueabs()
Get the absolute value as defined by the XPath abs() function
NumericValueceiling()
Implement the XPath ceiling() function
intcompareTo(Object other)
intcompareTo(long other)
Compare the value to a long
ConversionResultconvertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert to target data type
AtomicValuecopyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
booleaneffectiveBooleanValue()
Get the effective boolean value
static CharSequencefloatToString(float value)
Internal method used for conversion of a float to a string
NumericValuefloor()
Implement the XPath floor() function
CharSequencegetCanonicalLexicalRepresentation()
Get the canonical lexical representation as defined in XML Schema.
doublegetDoubleValue()
floatgetFloatValue()
Get the value
CharSequencegetPrimitiveStringValue()
Get the value as a String
BuiltInAtomicTypegetPrimitiveType()
Determine the primitive type of the value.
ComparablegetSchemaComparable()
Get an object that implements XML Schema comparison semantics
inthashCode()
Get the hashCode.
booleanisIdentical(Value v)
Determine whether two atomic values are identical, as determined by XML Schema rules.
booleanisNaN()
Test whether the value is the double/float value NaN
booleanisWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer
NumericValuenegate()
Negate the value
NumericValueround()
Implement the XPath round() function
NumericValueroundHalfToEven(int scale)
Implement the XPath round-to-half-even() function
doublesignum()
Determine whether the value is negative, zero, or positive

Field Detail

NaN

public static final FloatValue NaN

NEGATIVE_ZERO

public static final FloatValue NEGATIVE_ZERO

ONE

public static final FloatValue ONE

roundablePattern

static Pattern roundablePattern
Regex indicating that a number may be worth rounding

ZERO

public static final FloatValue ZERO

Constructor Detail

FloatValue

public FloatValue(CharSequence val)
Constructor supplying a string

FloatValue

public FloatValue(float value)
Constructor supplying a float

Parameters: value the value of the float

FloatValue

public FloatValue(float value, AtomicType type)
Constructor supplying a float and an AtomicType, for creating a value that belongs to a user-defined subtype of xs:float. It is the caller's responsibility to ensure that the supplied value conforms to the supplied type.

Parameters: value the value of the NumericValue type the type of the value. This must be a subtype of xs:float, and the value must conform to this type. The method does not check these conditions.

Method Detail

abs

public NumericValue abs()
Get the absolute value as defined by the XPath abs() function

Returns: the absolute value

Since: 9.2

ceiling

public NumericValue ceiling()
Implement the XPath ceiling() function

compareTo

public int compareTo(Object other)

compareTo

public int compareTo(long other)
Compare the value to a long

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

Parameters: requiredType an integer identifying the required atomic type context XPath dynamic context. Not used when converting from float

Returns: an AtomicValue, a value of the required type; or an ErrorValue

copyAsSubType

public AtomicValue copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label

Parameters: typeLabel the type label of the new copy. The caller is responsible for checking that the value actually conforms to this type.

effectiveBooleanValue

public boolean effectiveBooleanValue()
Get the effective boolean value

Returns: true unless the value is zero or NaN

floatToString

static CharSequence floatToString(float value)
Internal method used for conversion of a float to a string

Parameters: value the actual value

Returns: the value converted to a string, according to the XPath casting rules.

floor

public NumericValue floor()
Implement the XPath floor() function

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:float, the canonical representation always uses exponential notation.

getDoubleValue

public double getDoubleValue()

getFloatValue

public float getFloatValue()
Get the value

getPrimitiveStringValue

public CharSequence getPrimitiveStringValue()
Get the value as a String

Returns: a String representation of the value

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.

getSchemaComparable

public Comparable getSchemaComparable()
Get an object that implements XML Schema comparison semantics

hashCode

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

See Also: NumericValue

isIdentical

public boolean isIdentical(Value v)
Determine whether two atomic values are identical, as determined by XML Schema rules. This is a stronger test than equality (even schema-equality); for example two dateTime values are not identical unless they are in the same timezone.

Note that even this check ignores the type annotation of the value. The integer 3 and the short 3 are considered identical, even though they are not fully interchangeable. "Identical" means the same point in the value space, regardless of type annotation.

NaN is identical to itself.

Parameters: v the other value to be compared with this one

Returns: true if the two values are identical, false otherwise.

isNaN

public boolean isNaN()
Test whether the value is the double/float value NaN

isWholeNumber

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

negate

public NumericValue negate()
Negate the value

round

public NumericValue round()
Implement the XPath round() function

roundHalfToEven

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

signum

public double signum()
Determine whether the value is negative, zero, or positive

Returns: -1 if negative, 0 if zero (including negative zero), +1 if positive, NaN if NaN