Package org.firebirdsql.extern.decimal

## Class Decimal32

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

-     public final class Decimal32
      extends Decimal<Decimal32>

  An IEEE-754 Decimal32.
  Author:
    Mark Rotteveel

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Decimal32` | `NEGATIVE_INFINITY` |
    `static Decimal32` | `NEGATIVE_NAN` |
    `static Decimal32` | `NEGATIVE_SIGNALING_NAN` |
    `static Decimal32` | `POSITIVE_INFINITY` |
    `static Decimal32` | `POSITIVE_NAN` |
    `static Decimal32` | `POSITIVE_SIGNALING_NAN` |

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Decimal32` | `parseBytes​(byte[] decBytes)` | Parses the provided byte array to a `Decimal32`.
    `static Decimal32` | `valueOf​(double value)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(double value, OverflowHandling overflowHandling)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(java.lang.String value)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(java.lang.String value, OverflowHandling overflowHandling)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(java.math.BigDecimal value)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(java.math.BigDecimal value, OverflowHandling overflowHandling)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(java.math.BigInteger value)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(java.math.BigInteger value, OverflowHandling overflowHandling)` | Creates a `Decimal32` from `value`, applying rounding where necessary.
    `static Decimal32` | `valueOf​(Decimal<?> decimal)` | Converts a decimal to Decimal32.
    `static Decimal32` | `valueOf​(Decimal<?> decimal, OverflowHandling overflowHandling)` | Converts a decimal to Decimal32.
    `static Decimal32` | `valueOfExact​(java.math.BigInteger value)` | Creates a `Decimal32` 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 Decimal32 POSITIVE_INFINITY

    - #### NEGATIVE_INFINITY

          public static final Decimal32 NEGATIVE_INFINITY

    - #### POSITIVE_NAN

          public static final Decimal32 POSITIVE_NAN

    - #### NEGATIVE_NAN

          public static final Decimal32 NEGATIVE_NAN

    - #### POSITIVE_SIGNALING_NAN

          public static final Decimal32 POSITIVE_SIGNALING_NAN

    - #### NEGATIVE_SIGNALING_NAN

          public static final Decimal32 NEGATIVE_SIGNALING_NAN

  - ### Method Detail

    - #### parseBytes

          public static Decimal32 parseBytes​(byte[] decBytes)

      Parses the provided byte array to a `Decimal32`.

      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 Decimal32 value in network byte-order (aka big-endian)
      Returns:
        Instance of `Decimal32`
      Throws:
        `java.lang.IllegalArgumentException` - When `decBytes` is not 4 bytes long

    - #### valueOf

          public static Decimal32 valueOf​(java.math.BigDecimal value)

      Creates a `Decimal32` 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:
        Decimal32 equivalent

    - #### valueOf

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

      Creates a `Decimal32` 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:
        Decimal32 equivalent
      Throws:
        `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.

    - #### valueOf

          public static Decimal32 valueOf​(java.math.BigInteger value)

      Creates a `Decimal32` 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:
        Decimal32 equivalent

    - #### valueOf

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

      Creates a `Decimal32` 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:
        Decimal32 equivalent
      Throws:
        `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.
      See Also:
        `valueOfExact(BigInteger)`

    - #### valueOfExact

          public static Decimal32 valueOfExact​(java.math.BigInteger value)

      Creates a `Decimal32` from `value`, rejecting values that would lose precision due to rounding.
      Parameters:
        `value` - Big integer value to convert
      Returns:
        Decimal32 equivalent
      Throws:
        `DecimalOverflowException` - If the value is out of range.
      See Also:
        `valueOf(BigInteger, OverflowHandling)`

    - #### valueOf

          public static Decimal32 valueOf​(double value)

      Creates a `Decimal32` 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 Decimal32 valueOf​(double value,
                                          OverflowHandling overflowHandling)

      Creates a `Decimal32` 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 Decimal32 valueOf​(Decimal<?> decimal)

      Converts a decimal to Decimal32.

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

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

    - #### valueOf

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

      Converts a decimal to Decimal32.

      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 Decimal32, or `decimal` itself if it already is Decimal32
      Throws:
        `DecimalOverflowException` - If `OverflowHandling#THROW_EXCEPTION` and the value is out of range.

    - #### valueOf

          public static Decimal32 valueOf​(java.lang.String value)

      Creates a `Decimal32` 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 Decimal32 valueOf​(java.lang.String value,
                                          OverflowHandling overflowHandling)

      Creates a `Decimal32` 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.