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
    Modifier and Type | Field and Description
    --- | ---
    `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
    Modifier and Type | Method and Description
    --- | ---
    `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.

Copyright © 2001-2025 Jaybird (Firebird JDBC) team. All rights reserved.