S
- the scale metrics type associated with this decimalD
- the concrete class implementing this ImmutableDecimal
public abstract class AbstractImmutableDecimal<S extends ScaleMetrics,D extends AbstractImmutableDecimal<S,D>> extends AbstractDecimal<S,D> implements ImmutableDecimal<S>
Decimal
classes of different scales.Constructor and Description |
---|
AbstractImmutableDecimal(long unscaled)
Constructor with unscaled value.
|
Modifier and Type | Method and Description |
---|---|
ImmutableDecimal<S> |
max(ImmutableDecimal<S> val)
Returns the maximum of this
Decimal and val . |
ImmutableDecimal<S> |
min(ImmutableDecimal<S> val)
Returns the minimum of this
Decimal and val . |
ImmutableDecimal<?> |
multiplyExact(Decimal<?> multiplicand)
Returns a
Decimal whose value is (this * multiplicand) . |
ImmutableDecimal<?> |
scale(int scale)
|
ImmutableDecimal<?> |
scale(int scale,
RoundingMode roundingMode)
|
<S extends ScaleMetrics> |
scale(S scaleMetrics)
|
<S extends ScaleMetrics> |
scale(S scaleMetrics,
RoundingMode roundingMode)
|
String |
toString()
Returns a string representation of this
Decimal object as fixed-point Decimal always showing all Decimal
places (also trailing zeros) and a leading sign character if negative. |
long |
unscaledValue()
Returns the unscaled value underlying this
Decimal . |
abs, abs, add, add, add, add, add, add, add, add, addSquared, addSquared, addSquared, addUnscaled, addUnscaled, addUnscaled, addUnscaled, addUnscaled, avg, avg, byteValueExact, compareTo, compareToNumerically, create, createArray, createOrAssign, divide, divide, divide, divide, divide, divide, divide, divide, divideAndRemainder, divideAndRemainder, divideBy, divideBy, divideBy, divideByPowerOfTen, divideByPowerOfTen, divideByPowerOfTen, divideExact, divideToIntegralValue, divideToIntegralValue, divideToLongValue, divideToLongValue, divideTruncate, divideUnscaled, divideUnscaled, divideUnscaled, divideUnscaled, divideUnscaled, divideUnscaled, doubleValue, doubleValue, equals, floatValue, floatValue, fractionalPart, getArithmeticFor, getArithmeticFor, getArithmeticFor, getCheckedArithmeticFor, getDefaultArithmetic, getDefaultCheckedArithmetic, getRoundingDownArithmetic, getRoundingFloorArithmetic, getRoundingHalfEvenArithmetic, getRoundingUnnecessaryArithmetic, hashCode, integralPart, intValue, intValueExact, invert, invert, invert, isBetweenZeroAndMinusOne, isBetweenZeroAndOne, isEqualTo, isEqualToNumerically, isGreaterThan, isGreaterThanOrEqualTo, isIntegral, isIntegralPartZero, isLessThan, isLessThanOrEqualTo, isMinusOne, isNegative, isNonNegative, isNonPositive, isOne, isPositive, isUlp, isZero, longValue, longValue, longValueExact, max, max, min, min, multiply, multiply, multiply, multiply, multiply, multiply, multiply, multiplyBy, multiplyBy, multiplyBy, multiplyByPowerOfTen, multiplyByPowerOfTen, multiplyByPowerOfTen, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, negate, negate, pow, pow, pow, remainder, round, round, round, self, shiftLeft, shiftLeft, shiftLeft, shiftRight, shiftRight, shiftRight, shortValueExact, signum, sqrt, sqrt, square, square, square, subtract, subtract, subtract, subtract, subtract, subtract, subtract, subtract, subtractSquared, subtractSquared, subtractSquared, subtractUnscaled, subtractUnscaled, subtractUnscaled, subtractUnscaled, subtractUnscaled, toBigDecimal, toBigDecimal, toBigInteger, toBigInteger, toBigIntegerExact
byteValue, shortValue
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
abs, abs, add, add, add, add, add, add, add, add, addSquared, addSquared, addSquared, addUnscaled, addUnscaled, addUnscaled, addUnscaled, addUnscaled, avg, avg, divide, divide, divide, divide, divide, divide, divide, divide, divideAndRemainder, divideAndRemainder, divideBy, divideBy, divideBy, divideByPowerOfTen, divideByPowerOfTen, divideByPowerOfTen, divideExact, divideToIntegralValue, divideToIntegralValue, divideTruncate, divideUnscaled, divideUnscaled, divideUnscaled, divideUnscaled, divideUnscaled, divideUnscaled, fractionalPart, integralPart, invert, invert, invert, multiply, multiply, multiply, multiply, multiply, multiply, multiply, multiplyBy, multiplyBy, multiplyBy, multiplyByPowerOfTen, multiplyByPowerOfTen, multiplyByPowerOfTen, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, multiplyUnscaled, negate, negate, pow, pow, pow, remainder, round, round, round, shiftLeft, shiftLeft, shiftLeft, shiftRight, shiftRight, shiftRight, sqrt, sqrt, square, square, square, subtract, subtract, subtract, subtract, subtract, subtract, subtract, subtract, subtractSquared, subtractSquared, subtractSquared, subtractUnscaled, subtractUnscaled, subtractUnscaled, subtractUnscaled, subtractUnscaled
byteValue, byteValueExact, compareTo, compareToNumerically, divideToLongValue, divideToLongValue, doubleValue, doubleValue, equals, floatValue, floatValue, getFactory, getScale, getScaleMetrics, hashCode, intValue, intValueExact, isBetweenZeroAndMinusOne, isBetweenZeroAndOne, isEqualTo, isEqualToNumerically, isGreaterThan, isGreaterThanOrEqualTo, isIntegral, isIntegralPartZero, isLessThan, isLessThanOrEqualTo, isMinusOne, isNegative, isNonNegative, isNonPositive, isOne, isPositive, isUlp, isZero, longValue, longValue, longValueExact, max, min, shortValue, shortValueExact, signum, toBigDecimal, toBigDecimal, toBigInteger, toBigInteger, toBigIntegerExact, toImmutableDecimal, toMutableDecimal
public AbstractImmutableDecimal(long unscaled)
unscaled
- the unscaled valuepublic final long unscaledValue()
Decimal
Decimal
. This Decimal
is
(unscaledValue × 10-f) with f
representing the scale
, hence
the returned value equals (10f × this).unscaledValue
in interface Decimal<S extends ScaleMetrics>
Decimal.getScale()
,
ScaleMetrics.getScaleFactor()
public ImmutableDecimal<?> scale(int scale)
Decimal
Decimal
value whose scale
is changed to the given scale
value.
HALF_UP
rounding is used if the scale change involves rounding.
An exception is thrown if the scale conversion leads to an overflow.
scale
in interface Decimal<S extends ScaleMetrics>
scale
in interface ImmutableDecimal<S extends ScaleMetrics>
scale
- the scale to use for the result, must be in [0,18]
Decimal.scale(ScaleMetrics)
,
Decimal.scale(int, RoundingMode)
,
Decimal.round(int)
public <S extends ScaleMetrics> ImmutableDecimal<S> scale(S scaleMetrics)
Decimal
Decimal
value whose scale
is changed to the scale given by the
scaleMetrics
argument. HALF_UP
rounding is used if the scale change involves
rounding.
An exception is thrown if the scale conversion leads to an overflow.
scale
in interface Decimal<S extends ScaleMetrics>
scale
in interface ImmutableDecimal<S extends ScaleMetrics>
S
- the scale metrics type of the resultscaleMetrics
- the scale metrics to use for the resultDecimal.scale(int)
,
Decimal.scale(ScaleMetrics, RoundingMode)
,
Decimal.round(int)
public ImmutableDecimal<?> scale(int scale, RoundingMode roundingMode)
Decimal
Decimal
value whose scale
is changed to the given scale
value. The
specified roundingMode
is used if the scale change involves rounding.
An exception is thrown if the scale conversion leads to an overflow.
scale
in interface Decimal<S extends ScaleMetrics>
scale
in interface ImmutableDecimal<S extends ScaleMetrics>
scale
- the scale to use for the result, must be in [0,18]
roundingMode
- the rounding mode to apply if the scale change involves roundingDecimal.scale(int)
,
Decimal.scale(ScaleMetrics, RoundingMode)
,
Decimal.round(int, RoundingMode)
public <S extends ScaleMetrics> ImmutableDecimal<S> scale(S scaleMetrics, RoundingMode roundingMode)
Decimal
Decimal
value whose scale
is changed to the scale given by the
scaleMetrics
argument. The specified roundingMode
is used if the scale change involves rounding.
An exception is thrown if the scale conversion leads to an overflow.
scale
in interface Decimal<S extends ScaleMetrics>
scale
in interface ImmutableDecimal<S extends ScaleMetrics>
S
- the scale metrics type of the resultscaleMetrics
- the scale metrics to use for the resultroundingMode
- the rounding mode to apply if the scale change involves roundingDecimal.scale(ScaleMetrics)
,
Decimal.scale(int, RoundingMode)
,
Decimal.round(int, RoundingMode)
public ImmutableDecimal<?> multiplyExact(Decimal<?> multiplicand)
Decimal
Decimal
whose value is (this * multiplicand)
. The scale of the returned value is the
sum of the scales of this
Decimal and the multiplicand
argument. If the result scale exceeds 18,
an IllegalArgumentException
is thrown. An ArithmeticException
is thrown if the product is out of
the possible range for a Decimal with the result scale.
Note that the result is always a new instance --- immutable if this Decimal is an ImmutableDecimal
and mutable if it is a MutableDecimal
.
multiplyExact
in interface Decimal<S extends ScaleMetrics>
multiplyExact
in interface ImmutableDecimal<S extends ScaleMetrics>
multiplicand
- factor to multiply with this Decimal
(this * multiplicand)
with scale equal to the sum of scales of this
and
multiplicand
public ImmutableDecimal<S> min(ImmutableDecimal<S> val)
ImmutableDecimal
Decimal
and val
.min
in interface ImmutableDecimal<S extends ScaleMetrics>
val
- value with which the minimum is to be computed.Decimal
whose value is the lesser of this
Decimal
and val
. If they are equal, as defined by
the compareTo
method, this
is
returned.Decimal.compareTo(Decimal)
public ImmutableDecimal<S> max(ImmutableDecimal<S> val)
ImmutableDecimal
Decimal
and val
.max
in interface ImmutableDecimal<S extends ScaleMetrics>
val
- value with which the maximum is to be computed.Decimal
whose value is the greater of this
Decimal
and val
. If they are equal, as defined by
the compareTo
method, this
is
returned.Decimal.compareTo(Decimal)
public final String toString()
Decimal
Decimal
object as fixed-point Decimal always showing all Decimal
places (also trailing zeros) and a leading sign character if negative.toString
in interface Decimal<S extends ScaleMetrics>
toString
in class AbstractDecimal<S extends ScaleMetrics,D extends AbstractImmutableDecimal<S,D>>
String
Decimal representation of this Decimal
object with all the fraction digits
(including trailing zeros)