Package javax.measure.converter
Class RationalConverter
- java.lang.Object
-
- javax.measure.converter.UnitConverter
-
- javax.measure.converter.RationalConverter
-
- All Implemented Interfaces:
Serializable
public final class RationalConverter extends UnitConverter
This class represents a converter multiplying numeric values by an exact scaling factor (represented as the quotient of two
long
numbers).Instances of this class are immutable.
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class javax.measure.converter.UnitConverter
IDENTITY
-
-
Constructor Summary
Constructors Constructor Description RationalConverter(long dividend, long divisor)
Creates a rational converter with the specified dividend and divisor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description UnitConverter
concatenate(UnitConverter converter)
Concatenates this converter with another converter.double
convert(double amount)
Converts a double value.long
getDividend()
Returns the dividend for this rational converter.long
getDivisor()
Returns the positive divisor for this rational converter.UnitConverter
inverse()
Returns the inverse of this converter.boolean
isLinear()
Indicates if this converter is linear.-
Methods inherited from class javax.measure.converter.UnitConverter
equals, hashCode
-
-
-
-
Constructor Detail
-
RationalConverter
public RationalConverter(long dividend, long divisor)
Creates a rational converter with the specified dividend and divisor.- Parameters:
dividend
- the dividend.divisor
- the positive divisor.- Throws:
IllegalArgumentException
- ifdivisor < 0
IllegalArgumentException
- ifdividend == divisor
-
-
Method Detail
-
getDividend
public long getDividend()
Returns the dividend for this rational converter.- Returns:
- this converter dividend.
-
getDivisor
public long getDivisor()
Returns the positive divisor for this rational converter.- Returns:
- this converter divisor.
-
inverse
public UnitConverter inverse()
Description copied from class:UnitConverter
Returns the inverse of this converter. Ifx
is a valid value, thenx == inverse().convert(convert(x))
to within the accuracy of computer arithmetic.- Specified by:
inverse
in classUnitConverter
- Returns:
- the inverse of this converter.
-
convert
public double convert(double amount)
Description copied from class:UnitConverter
Converts a double value.- Specified by:
convert
in classUnitConverter
- Parameters:
amount
- the numeric value to convert.- Returns:
- the converted numeric value.
-
isLinear
public boolean isLinear()
Description copied from class:UnitConverter
Indicates if this converter is linear. A converter is linear ifconvert(u + v) == convert(u) + convert(v)
andconvert(r * u) == r * convert(u)
. For linear converters the following property always hold:[code] y1 = c1.convert(x1); y2 = c2.convert(x2); then y1*y2 = c1.concatenate(c2).convert(x1*x2)[/code]- Specified by:
isLinear
in classUnitConverter
- Returns:
true
if this converter is linear;false
otherwise.
-
concatenate
public UnitConverter concatenate(UnitConverter converter)
Description copied from class:UnitConverter
Concatenates this converter with another converter. The resulting converter is equivalent to first converting by the specified converter, and then converting by this converter.Note: Implementations must ensure that the
UnitConverter.IDENTITY
instance is returned if the resulting converter is an identity converter.- Overrides:
concatenate
in classUnitConverter
- Parameters:
converter
- the other converter.- Returns:
- the concatenation of this converter with the other converter.
-
-