com.mckoi.util
Class BigNumber

java.lang.Object
  extended by java.lang.Number
      extended by 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
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
 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.