Returns a *normalized* version of this Decimal number.
Returns a *normalized* version of this Decimal number. Since BigDecimal
cannot represent all valid JSON value exactly, due to the exponent being
limited to an Int
, this method let's us get a normalized number that
can be used to compare for equality.
The 1st value (BigInt) is the exponent used to scale the 2nd value (BigDecimal) back to the original value represented by this number. The 2nd BigDecimal will always either be 0 or a number with exactly 1 decimal digit to the right of the decimal point. If the 2nd value is 0, then the exponent will always be 0 as well.
Returns this number as a BigDecimal
.
Returns this number as a BigDecimal
.
Returns this number as a BigInt
, only if this number is an integer.
Returns this number as a BigInt
, only if this number is an integer.
Returns this number as a Byte
, only if this number is a valid Byte
.
Returns this number as a Byte
, only if this number is a valid Byte
.
Returns this number as a Double
, only if this number can be represented as a Double
.
Returns this number as a Double
, only if this number can be represented as a Double
.
Returns this number as a Float
, only if this number can be represented as a Float
.
Returns this number as a Float
, only if this number can be represented as a Float
.
Returns this number as a Int
, only if this number is a valid Int
.
Returns this number as a Int
, only if this number is a valid Int
.
Returns this number as a Long
, only if this number is a valid Long
.
Returns this number as a Long
, only if this number is a valid Long
.
Returns this number as a Short
, only if this number is a valid Short
.
Returns this number as a Short
, only if this number is a valid Short
.
Truncates the number to a BigInt.
Truncates the number to a BigInt. Truncation means that we round the real number towards 0 to the closest BigInt.
Truncation fails for numbers whose decimal representation contains more
than 2 ^ 18 digits, since creating BigInt
values for these numbers is
computationally expensive.
Truncates the number to a Byte.
Truncates the number to a Byte. Truncation means that we round the real
number towards 0 to the closest, valid Byte. So, if the number is 1e99,
then this will return Byte.MaxValue
.
Truncates this number to the best Double
approximation to this number.
Truncates this number to the best Double
approximation to this number.
Anything over Double.MaxValue
gets rounded to Double.PositiveInfinity
and anything below Double.MinValue
gets rounded to
Double.NegativeInfinity
.
Truncates this number to the best Float
approximation to this number.
Truncates this number to the best Float
approximation to this number.
Anything over Float.MaxValue
gets rounded to Float.PositiveInfinity
and anything below Float.MinValue
gets rounded to
Float.NegativeInfinity
.
Truncates the number to a Int.
Truncates the number to a Int. Truncation means that we round the real
number towards 0 to the closest, valid Int. So, if the number is 1e99,
then this will return Int.MaxValue
.
Truncates the number to a Long.
Truncates the number to a Long. Truncation means that we round the real
number towards 0 to the closest, valid Long. So, if the number is 1e99,
then this will return Long.MaxValue
.
Truncates the number to a Short.
Truncates the number to a Short. Truncation means that we round the real
number towards 0 to the closest, valid Short. So, if the number is 1e99,
then this will return Short.MaxValue
.
A JsonDecimal represents and valid JSON number as a String. Unfortunately, there is no type in the Scala standard library which can represent all valid JSON decimal numbers, since the exponent may be larger than an
Int
. Such a number can still be round tripped (parser to printer). We lazily parse the string to aBigDecimal
or aDouble
on demand.