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
`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`