Package org.firebirdsql.extern.decimal

## Class Decimal<T extends Decimal<T>>

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

- Direct Known Subclasses:
    `Decimal128`, `Decimal32`, `Decimal64`

      public abstract class Decimal<T extends Decimal<T>>
      extends java.lang.Object

  Abstract base class for IEEE-754 decimals.
  Author:
    Mark Rotteveel

- - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `double` | `doubleValue()` | Converts this decimal to a double value.
    `boolean` | `equals​(java.lang.Object o)` |
    `int` | `hashCode()` |
    `java.math.BigDecimal` | `toBigDecimal()` | Converts this decimal to a `BigDecimal`.
    `byte[]` | `toBytes()` | Converts this decimal to its IEEE-754 byte encoding in network byte-order (aka big-endian).
    `<D extends Decimal<D>> D` | `toDecimal​(java.lang.Class<D> decimalType)` | Converts this decimal to the requested decimal type, rounding when necessary.
    `<D extends Decimal<D>> D` | `toDecimal​(java.lang.Class<D> decimalType, OverflowHandling overflowHandling)` | Converts this decimal to the requested decimal type, rounding when necessary.
    `java.lang.String` | `toString()` |

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

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

- - ### Method Detail

    - #### toBigDecimal

          public final java.math.BigDecimal toBigDecimal()

      Converts this decimal to a `BigDecimal`.
      Returns:
        Value as BigDecimal
      Throws:
        `DecimalInconvertibleException` - If this value is a NaN, sNaN or Infinity, which can't be represented as a `BigDecimal`.

    - #### doubleValue

          public final double doubleValue()

      Converts this decimal to a double value.

      For normal, finite, decimal values, see `BigDecimal.doubleValue()`.

      For type INFINITY, returns `Double.POSITIVE_INFINITY` or `Double.NEGATIVE_INFINITY`. For all NaN-specials, returns `Double.NaN` (irrespective of signum).

      Returns:
        this decimal converted to a `double`

    - #### toBytes

          public final byte[] toBytes()

      Converts this decimal to its IEEE-754 byte encoding in network byte-order (aka big-endian).

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

      Returns:
        byte array

    - #### toDecimal

          public final <D extends Decimal<D>> D toDecimal​(java.lang.Class<D> decimalType)

      Converts this decimal to the requested decimal type, rounding when necessary.
      Type Parameters:
        `D` - Type parameter of decimal
      Parameters:
        `decimalType` - Target decimal type
      Returns:
        This value after conversion, or this if `decimalType` is the same as this type
      Throws:
        `java.lang.IllegalArgumentException` - If conversion to `decimalType` is not supported

    - #### toDecimal

          public final <D extends Decimal<D>> D toDecimal​(java.lang.Class<D> decimalType,
                                                          OverflowHandling overflowHandling)

      Converts this decimal to the requested decimal type, rounding when necessary.
      Type Parameters:
        `D` - Type parameter of decimal
      Parameters:
        `decimalType` - Target decimal type
        `overflowHandling` - Handling of overflows
      Returns:
        This value after conversion, or this if `decimalType` is the same as this type
      Throws:
        `java.lang.IllegalArgumentException` - If conversion to `decimalType` is not supported
        `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range for the target decimal type.

    - #### toString

          public final java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### equals

          public final boolean equals​(java.lang.Object o)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public final int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`