public final class RationalConverter extends AbstractConverter implements tec.uom.lib.common.function.ValueSupplier<java.lang.Double>, java.util.function.Supplier<java.lang.Double>, java.util.function.DoubleSupplier
This class represents a converter multiplying numeric values by an exact scaling factor (represented as the quotient of two BigInteger
numbers).
AbstractConverter.Pair
Modifier and Type | Field and Description |
---|---|
private java.math.BigInteger |
dividend
Holds the converter dividend.
|
private java.math.BigInteger |
divisor
Holds the converter divisor (always positive).
|
private static long |
serialVersionUID |
IDENTITY, PI
Constructor and Description |
---|
RationalConverter(java.math.BigInteger dividend,
java.math.BigInteger divisor)
Creates a rational converter with the specified dividend and divisor.
|
RationalConverter(long dividend,
long divisor)
Convenience method equivalent to
new RationalConverter(BigInteger.valueOf(dividend), BigInteger.valueOf(divisor)) |
Modifier and Type | Method and Description |
---|---|
javax.measure.UnitConverter |
concatenate(javax.measure.UnitConverter converter) |
java.math.BigDecimal |
convert(java.math.BigDecimal value,
java.math.MathContext ctx) |
double |
convert(double value) |
boolean |
equals(java.lang.Object obj) |
java.lang.Double |
get() |
double |
getAsDouble() |
java.math.BigInteger |
getDividend()
Returns the integer dividend for this rational converter.
|
java.math.BigInteger |
getDivisor()
Returns the integer (positive) divisor for this rational converter.
|
java.lang.Double |
getValue() |
int |
hashCode() |
RationalConverter |
inverse() |
boolean |
isLinear() |
static RationalConverter |
of(java.math.BigInteger dividend,
java.math.BigInteger divisor)
Convenience method equivalent to
new RationalConverter(dividend, divisor) |
static RationalConverter |
of(double dividend,
double divisor)
Convenience method equivalent to
new RationalConverter(BigDecimal.valueOf(dividend).toBigInteger(),
BigDecimal.valueOf(divisor).toBigInteger()) |
static RationalConverter |
of(long dividend,
long divisor)
Convenience method equivalent to
new RationalConverter(dividend, divisor) |
private static double |
toDouble(java.math.BigInteger integer) |
java.lang.String |
toString() |
concatenate, convert, getConversionSteps, isIdentity
private static final long serialVersionUID
private final java.math.BigInteger dividend
private final java.math.BigInteger divisor
public RationalConverter(java.math.BigInteger dividend, java.math.BigInteger divisor)
dividend
- the dividend.divisor
- the positive divisor.java.lang.IllegalArgumentException
- if divisor <= 0
java.lang.IllegalArgumentException
- if dividend == divisor
public RationalConverter(long dividend, long divisor)
new RationalConverter(BigInteger.valueOf(dividend), BigInteger.valueOf(divisor))
dividend
- the dividend.divisor
- the positive divisor.java.lang.IllegalArgumentException
- if divisor <= 0
java.lang.IllegalArgumentException
- if dividend == divisor
public static RationalConverter of(java.math.BigInteger dividend, java.math.BigInteger divisor)
new RationalConverter(dividend, divisor)
dividend
- the dividend.divisor
- the positive divisor.java.lang.IllegalArgumentException
- if divisor <= 0
java.lang.IllegalArgumentException
- if dividend == divisor
public static RationalConverter of(long dividend, long divisor)
new RationalConverter(dividend, divisor)
dividend
- the dividend.divisor
- the positive divisor.java.lang.IllegalArgumentException
- if divisor <= 0
java.lang.IllegalArgumentException
- if dividend == divisor
public static RationalConverter of(double dividend, double divisor)
new RationalConverter(BigDecimal.valueOf(dividend).toBigInteger(),
BigDecimal.valueOf(divisor).toBigInteger())
dividend
- the dividend.divisor
- the positive divisor.java.lang.IllegalArgumentException
- if divisor <= 0
java.lang.IllegalArgumentException
- if dividend == divisor
public java.math.BigInteger getDividend()
public java.math.BigInteger getDivisor()
public double convert(double value)
convert
in interface javax.measure.UnitConverter
convert
in class AbstractConverter
private static double toDouble(java.math.BigInteger integer)
public java.math.BigDecimal convert(java.math.BigDecimal value, java.math.MathContext ctx) throws java.lang.ArithmeticException
convert
in class AbstractConverter
java.lang.ArithmeticException
public javax.measure.UnitConverter concatenate(javax.measure.UnitConverter converter)
concatenate
in interface javax.measure.UnitConverter
concatenate
in class AbstractConverter
public RationalConverter inverse()
inverse
in interface javax.measure.UnitConverter
inverse
in class AbstractConverter
public final java.lang.String toString()
toString
in class java.lang.Object
public boolean equals(java.lang.Object obj)
equals
in class AbstractConverter
public int hashCode()
hashCode
in class AbstractConverter
public boolean isLinear()
isLinear
in interface javax.measure.UnitConverter
public java.lang.Double getValue()
getValue
in interface tec.uom.lib.common.function.ValueSupplier<java.lang.Double>
public double getAsDouble()
getAsDouble
in interface java.util.function.DoubleSupplier
public java.lang.Double get()
get
in interface java.util.function.Supplier<java.lang.Double>