Package com.mckoi.util

## Class BigNumber

- java.lang.Object
- - java.lang.Number
  - - com.mckoi.util.BigNumber

All Implemented Interfaces:
  `java.io.Serializable`

    public final class BigNumber
    extends java.lang.Number

Extends BigDecimal to allow a number to be positive infinity, negative infinity and not-a-number. This provides compatibility with float and double types.

Author:
  Tobias Downer
See Also:
  Serialized Form

### Field Summary

Fields
`static BigNumber` `BIG_NUMBER_ONE`
`static BigNumber` `BIG_NUMBER_ZERO` Statics for 0 and 1.
`static BigNumber` `NaN`
`static BigNumber` `NEGATIVE_INFINITY` Statics for negative infinity, positive infinity and NaN.
`static BigNumber` `POSITIVE_INFINITY`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`BigNumber` `abs()`
`BigNumber` `add​(BigNumber number)`
`java.math.BigDecimal` `asBigDecimal()` Returns the big number as a BigDecimal object.
`BigNumber` `bitWiseOr​(BigNumber number)`
`byte` `byteValue()` Returns this big number as a byte.
`boolean` `canBeRepresentedAsInt()` Returns true if this BigNumber can be represented by a 32-bit int (has no scale).
`boolean` `canBeRepresentedAsLong()` Returns true if this BigNumber can be represented by a 64-bit long (has no scale).
`int` `compareTo​(BigNumber number)` Compares this BigNumber with the given BigNumber.
`BigNumber` `divide​(BigNumber number)`
`double` `doubleValue()` Returns this big number as a double.
`boolean` `equals​(java.lang.Object ob)` The equals comparison uses the BigDecimal 'equals' method to compare values.
`float` `floatValue()` Returns this big number as a float.
`static BigNumber` `fromBigDecimal​(java.math.BigDecimal val)` Creates a BigNumber from a BigDecimal.
`static BigNumber` `fromData​(byte[] buf, int scale, byte state)` Creates a BigNumber from the given data.
`static BigNumber` `fromDouble​(double value)` Creates a BigNumber from a double.
`static BigNumber` `fromFloat​(float value)` Creates a BigNumber from a float.
`static BigNumber` `fromInt​(int value)` Creates a BigNumber from an int.
`static BigNumber` `fromLong​(long value)` Creates a BigNumber from a long.
`static BigNumber` `fromString​(java.lang.String str)` Creates a BigNumber from a string.
`int` `getScale()` Returns the scale of this number, or -1 if the number has no scale (if it -inf, +inf or NaN).
`byte` `getState()` Returns the state of this number.
`int` `intValue()` Returns this big number as an int.
`long` `longValue()` Returns this big number as a long.
`BigNumber` `multiply​(BigNumber number)`
`BigNumber` `setScale​(int d, int round_enum)`
`short` `shortValue()` Returns this big number as a short.
`int` `signum()`
`BigNumber` `sqrt()`
`BigNumber` `subtract​(BigNumber number)`
`byte[]` `toByteArray()` Returns this number as a byte array (unscaled).
`java.lang.String` `toString()` Returns this big number as a string.

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

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

### Field Detail

#### NEGATIVE_INFINITY

    public static final BigNumber NEGATIVE_INFINITY

Statics for negative infinity, positive infinity and NaN.

#### POSITIVE_INFINITY

    public static final BigNumber POSITIVE_INFINITY

#### NaN

    public static final BigNumber NaN

#### BIG_NUMBER_ZERO

    public static final BigNumber BIG_NUMBER_ZERO

Statics for 0 and 1.

#### BIG_NUMBER_ONE

    public static final BigNumber BIG_NUMBER_ONE

### Method Detail

#### canBeRepresentedAsLong

    public boolean canBeRepresentedAsLong()

Returns true if this BigNumber can be represented by a 64-bit long (has no scale).

#### canBeRepresentedAsInt

    public boolean canBeRepresentedAsInt()

Returns true if this BigNumber can be represented by a 32-bit int (has no scale).

#### getScale

    public int getScale()

Returns the scale of this number, or -1 if the number has no scale (if it -inf, +inf or NaN).

#### getState

    public byte getState()

Returns the state of this number. Returns either 1 which indicates negative infinity, 2 which indicates positive infinity, or 3 which indicates NaN.

#### toByteArray

    public byte[] toByteArray()

Returns this number as a byte array (unscaled).

#### toString

    public java.lang.String toString()

Returns this big number as a string.

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

#### doubleValue

    public double doubleValue()

Returns this big number as a double.

Specified by:
  `doubleValue` in class `java.lang.Number`

#### floatValue

    public float floatValue()

Returns this big number as a float.

Specified by:
  `floatValue` in class `java.lang.Number`

#### longValue

    public long longValue()

Returns this big number as a long.

Specified by:
  `longValue` in class `java.lang.Number`

#### intValue

    public int intValue()

Returns this big number as an int.

Specified by:
  `intValue` in class `java.lang.Number`

#### shortValue

    public short shortValue()

Returns this big number as a short.

Overrides:
  `shortValue` in class `java.lang.Number`

#### byteValue

    public byte byteValue()

Returns this big number as a byte.

Overrides:
  `byteValue` in class `java.lang.Number`

#### asBigDecimal

    public java.math.BigDecimal asBigDecimal()

Returns the big number as a BigDecimal object. Note that this throws an arith error if this number represents NaN, +Inf or -Inf.

#### compareTo

    public int compareTo​(BigNumber number)

Compares this BigNumber with the given BigNumber. Returns 0 if the values are equal, >0 if this is greater than the given value, and < 0 if this is less than the given value.

#### equals

    public boolean equals​(java.lang.Object ob)

The equals comparison uses the BigDecimal 'equals' method to compare values. This means that '0' is NOT equal to '0.0' and '10.0' is NOT equal to '10.00'. Care should be taken when using this method.

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

#### bitWiseOr

    public BigNumber bitWiseOr​(BigNumber number)

#### add

    public BigNumber add​(BigNumber number)

#### subtract

    public BigNumber subtract​(BigNumber number)

#### multiply

    public BigNumber multiply​(BigNumber number)

#### divide

    public BigNumber divide​(BigNumber number)

#### abs

    public BigNumber abs()

#### signum

    public int signum()

#### setScale

    public BigNumber setScale​(int d,
                              int round_enum)

#### sqrt

    public BigNumber sqrt()

#### fromDouble

    public static BigNumber fromDouble​(double value)

Creates a BigNumber from a double.

#### fromFloat

    public static BigNumber fromFloat​(float value)

Creates a BigNumber from a float.

#### fromLong

    public static BigNumber fromLong​(long value)

Creates a BigNumber from a long.

#### fromInt

    public static BigNumber fromInt​(int value)

Creates a BigNumber from an int.

#### fromString

    public static BigNumber fromString​(java.lang.String str)

Creates a BigNumber from a string.

#### fromBigDecimal

    public static BigNumber fromBigDecimal​(java.math.BigDecimal val)

Creates a BigNumber from a BigDecimal.

#### fromData

    public static BigNumber fromData​(byte[] buf,
                                     int scale,
                                     byte state)

Creates a BigNumber from the given data.