In theory BigDecimal can represent a very large range of valid JSON numbers (in most cases if a JSON number string can fit in memory, it's possible to construct an exact BigDecimal representation), but in practice this becomes intractable for many small JSON numbers (e.g. "1e2147483648" cannot be directly parsed as a BigDecimal).
This type makes it possible to represent much, much larger numbers efficiently (although it doesn't support many operations on these values). It also makes it possible to distinguish between positive and negative zeros (unlike BigDecimal), which may be useful in some applications.
Returns -1 if it is less than 0, +1 if it is greater than 0, and 0 if it is equal to 0. Note that this follows the behavior of scala.Double for negative zero (returning 0).
Convert to a java.math.BigInteger if this is a sufficiently small whole number.
Convert to a java.math.BigInteger if this is a sufficiently small whole number.
The maximum number of digits is somewhat arbitrarily set at 2^18 digits, since larger values may require excessive processing power. Larger values may be converted to BigInteger with toBigIntegerWithMaxDigits or via toBigDecimal.