org.firebirdsql.extern.decimal

## Class Decimal128

- java.lang.Object
- - org.firebirdsql.extern.decimal.Decimal<Decimal128>
  - - org.firebirdsql.extern.decimal.Decimal128

    public final class Decimal128
    extends Decimal<Decimal128>

An IEEE-754 Decimal128.

Author:
  Mark Rotteveel

### Field Summary

Fields
`static Decimal128` `NEGATIVE_INFINITY`
`static Decimal128` `NEGATIVE_NAN`
`static Decimal128` `NEGATIVE_SIGNALING_NAN`
`static Decimal128` `POSITIVE_INFINITY`
`static Decimal128` `POSITIVE_NAN`
`static Decimal128` `POSITIVE_SIGNALING_NAN`

### Method Summary

All Methods Static Methods Concrete Methods
`static Decimal128` `parseBytes(byte[] decBytes)` Parses the provided byte array to a `Decimal128`.
`static Decimal128` `valueOf(java.math.BigDecimal value)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOf(java.math.BigDecimal value, OverflowHandling overflowHandling)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOf(java.math.BigInteger value)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOf(java.math.BigInteger value, OverflowHandling overflowHandling)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOf(Decimal<?> decimal)` Converts a decimal to Decimal128.
`static Decimal128` `valueOf(Decimal<?> decimal, OverflowHandling overflowHandling)` Converts a decimal to Decimal128.
`static Decimal128` `valueOf(double value)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOf(double value, OverflowHandling overflowHandling)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOf(java.lang.String value)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOf(java.lang.String value, OverflowHandling overflowHandling)` Creates a `Decimal128` from `value`, applying rounding where necessary.
`static Decimal128` `valueOfExact(java.math.BigInteger value)` Creates a `Decimal128` from `value`, rejecting values that would lose precision due to rounding.

### Methods inherited from class org.firebirdsql.extern.decimal.Decimal

`doubleValue, equals, hashCode, toBigDecimal, toBytes, toDecimal, toDecimal, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### POSITIVE_INFINITY

    public static final Decimal128 POSITIVE_INFINITY

#### NEGATIVE_INFINITY

    public static final Decimal128 NEGATIVE_INFINITY

#### POSITIVE_NAN

    public static final Decimal128 POSITIVE_NAN

#### NEGATIVE_NAN

    public static final Decimal128 NEGATIVE_NAN

#### POSITIVE_SIGNALING_NAN

    public static final Decimal128 POSITIVE_SIGNALING_NAN

#### NEGATIVE_SIGNALING_NAN

    public static final Decimal128 NEGATIVE_SIGNALING_NAN

### Method Detail

#### parseBytes

    public static Decimal128 parseBytes(byte[] decBytes)

Parses the provided byte array to a `Decimal128`.

This method parses network byte-order (aka big-endian). When using little-endian order, you will need to reverse the bytes in the array first.

Parameters:
  `decBytes` - Bytes of the Decimal128 value in network byte-order (aka big-endian)
Returns:
  Instance of `Decimal128`
Throws:
  `java.lang.IllegalArgumentException` - When `decBytes` is not 16 bytes long

#### valueOf

    public static Decimal128 valueOf(java.math.BigDecimal value)

Creates a `Decimal128` from `value`, applying rounding where necessary.

Values exceeding the range of this type will be returned as +/-Infinity.

Parameters:
  `value` - Big decimal value to convert
Returns:
  Decimal128 equivalent

#### valueOf

    public static Decimal128 valueOf(java.math.BigDecimal value,
                                     OverflowHandling overflowHandling)

Creates a `Decimal128` from `value`, applying rounding where necessary.

Values exceeding the range of this type will be handled according to the specified overflow handling.

Parameters:
  `value` - Big decimal value to convert
  `overflowHandling` - Overflow handling to apply
Returns:
  Decimal128 equivalent
Throws:
  `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.

#### valueOf

    public static Decimal128 valueOf(java.math.BigInteger value)

Creates a `Decimal128` from `value`, applying rounding where necessary.

Values exceeding the range of this type will be returned as +/-Infinity.

Parameters:
  `value` - Big integer value to convert
Returns:
  Decimal128 equivalent

#### valueOf

    public static Decimal128 valueOf(java.math.BigInteger value,
                                     OverflowHandling overflowHandling)

Creates a `Decimal128` from `value`, applying rounding where necessary.

Values exceeding the range of this type will be handled according to the specified overflow handling.

Calling this method is equivalent to `valueOf(new BigDecimal(value), overflowHandling)`.

Parameters:
  `value` - Big integer value to convert
  `overflowHandling` - Handling of overflows
Returns:
  Decimal128 equivalent
Throws:
  `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.
See Also:
  `valueOfExact(BigInteger)`

#### valueOfExact

    public static Decimal128 valueOfExact(java.math.BigInteger value)

Creates a `Decimal128` from `value`, rejecting values that would lose precision due to rounding.

Parameters:
  `value` - Big integer value to convert
Returns:
  Decimal128 equivalent
Throws:
  `DecimalOverflowException` - If the value is out of range.
See Also:
  `valueOf(BigInteger, OverflowHandling)`

#### valueOf

    public static Decimal128 valueOf(double value)

Creates a `Decimal128` from `value`, applying rounding where necessary.

`Double.NaN` is mapped to positive NaN, the infinities to their equivalent +/- infinity.

For normal, finite, values, this is equivalent to `valueOf(BigDecimal.valueOf(value))`.

Parameters:
  `value` - Double value
Returns:
  Decimal equivalent

#### valueOf

    public static Decimal128 valueOf(double value,
                                     OverflowHandling overflowHandling)

Creates a `Decimal128` from `value`, applying rounding where necessary.

`Double.NaN` is mapped to positive NaN, the infinities to their equivalent +/- infinity.

For normal, finite, values, this is equivalent to `valueOf(BigDecimal.valueOf(value), overflowHandling)`.

Parameters:
  `value` - Double value
  `overflowHandling` - Overflow handling to apply
Returns:
  Decimal equivalent
Throws:
  `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.

#### valueOf

    public static Decimal128 valueOf(Decimal<?> decimal)

Converts a decimal to Decimal128.

For normal, finite, decimals, this behaves like `valueOf(decimal.toBigDecimal())`, see `valueOf(BigDecimal)`.

Parameters:
  `decimal` - Decimal to convert
Returns:
  Decimal converted to Decimal128, or `decimal` itself if it already is Decimal128

#### valueOf

    public static Decimal128 valueOf(Decimal<?> decimal,
                                     OverflowHandling overflowHandling)

Converts a decimal to Decimal128.

For normal, finite, decimals, this behaves like `valueOf(decimal.toBigDecimal(), overflowHandling)`, see `valueOf(BigDecimal, OverflowHandling)`.

Parameters:
  `decimal` - Decimal to convert
  `overflowHandling` - Overflow handling to apply
Returns:
  Decimal converted to Decimal128, or `decimal` itself if it already is Decimal128
Throws:
  `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.

#### valueOf

    public static Decimal128 valueOf(java.lang.String value)

Creates a `Decimal128` from `value`, applying rounding where necessary.

Except for the special values [+/-]Inf, [+/-]Infinity, [+/-]NaN and [+/-]sNaN (case insensitive), the rules of `BigDecimal(String)` apply, with special handling in place to discern between positive and negative zero.

Values exceeding the range of this type will be returned as +/-Infinity.

Parameters:
  `value` - String value to convert
Returns:
  Decimal equivalent
Throws:
  `java.lang.NumberFormatException` - If the provided string is not valid numeric string.

#### valueOf

    public static Decimal128 valueOf(java.lang.String value,
                                     OverflowHandling overflowHandling)

Creates a `Decimal128` from `value`, applying rounding where necessary.

Except for the special values [+/-]Inf, [+/-]Infinity, [+/-]NaN and [+/-]sNaN (case insensitive), the rules of `BigDecimal(String)` apply, with special handling in place to discern between positive and negative zero.

Values exceeding the range of this type will be handled according to the specified overflow handling.

Parameters:
  `value` - String value to convert
  `overflowHandling` - Overflow handling to apply
Returns:
  Decimal equivalent
Throws:
  `java.lang.NumberFormatException` - If the provided string is not valid numeric string.
  `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.