Class Decimal

Object
org.apache.spark.sql.types.Decimal
All Implemented Interfaces:
Serializable, Comparable<Decimal>, scala.math.Ordered<Decimal>, scala.Serializable

public final class Decimal extends Object implements scala.math.Ordered<Decimal>, scala.Serializable
A mutable implementation of BigDecimal that can hold a Long if values are small enough.

The semantics of the fields are as follows: - _precision and _scale represent the SQL precision and scale we are looking for - If decimalVal is set, it represents the whole decimal value - Otherwise, the decimal value is longVal / (10 ** _scale)

Note, for values between -1.0 and 1.0, precision digits are only counted after dot.

See Also:
  • Constructor Details

    • Decimal

      public Decimal()
  • Method Details

    • ROUND_HALF_UP

      public static scala.Enumeration.Value ROUND_HALF_UP()
    • ROUND_HALF_EVEN

      public static scala.Enumeration.Value ROUND_HALF_EVEN()
    • ROUND_CEILING

      public static scala.Enumeration.Value ROUND_CEILING()
    • ROUND_FLOOR

      public static scala.Enumeration.Value ROUND_FLOOR()
    • MAX_INT_DIGITS

      public static int MAX_INT_DIGITS()
      Maximum number of decimal digits an Int can represent
    • MAX_LONG_DIGITS

      public static int MAX_LONG_DIGITS()
      Maximum number of decimal digits a Long can represent
    • POW_10

      public static long[] POW_10()
    • apply

      public static Decimal apply(double value)
    • apply

      public static Decimal apply(long value)
    • apply

      public static Decimal apply(int value)
    • apply

      public static Decimal apply(scala.math.BigDecimal value)
    • apply

      public static Decimal apply(BigDecimal value)
    • apply

      public static Decimal apply(BigInteger value)
    • apply

      public static Decimal apply(scala.math.BigInt value)
    • apply

      public static Decimal apply(scala.math.BigDecimal value, int precision, int scale)
    • apply

      public static Decimal apply(BigDecimal value, int precision, int scale)
    • apply

      public static Decimal apply(long unscaled, int precision, int scale)
    • apply

      public static Decimal apply(String value)
    • fromDecimal

      public static Decimal fromDecimal(Object value)
    • fromString

      public static Decimal fromString(org.apache.spark.unsafe.types.UTF8String str)
    • fromStringANSI

      public static Decimal fromStringANSI(org.apache.spark.unsafe.types.UTF8String str, DecimalType to, org.apache.spark.sql.catalyst.trees.SQLQueryContext context)
    • createUnsafe

      public static Decimal createUnsafe(long unscaled, int precision, int scale)
      Creates a decimal from unscaled, precision and scale without checking the bounds.
      Parameters:
      unscaled - (undocumented)
      precision - (undocumented)
      scale - (undocumented)
      Returns:
      (undocumented)
    • maxPrecisionForBytes

      public static int maxPrecisionForBytes(int numBytes)
    • minBytesForPrecision

      public static int[] minBytesForPrecision()
    • precision

      public int precision()
    • scale

      public int scale()
    • set

      public Decimal set(long longVal)
      Set this Decimal to the given Long. Will have precision 20 and scale 0.
      Parameters:
      longVal - (undocumented)
      Returns:
      (undocumented)
    • set

      public Decimal set(int intVal)
      Set this Decimal to the given Int. Will have precision 10 and scale 0.
      Parameters:
      intVal - (undocumented)
      Returns:
      (undocumented)
    • set

      public Decimal set(long unscaled, int precision, int scale)
      Set this Decimal to the given unscaled Long, with a given precision and scale.
      Parameters:
      unscaled - (undocumented)
      precision - (undocumented)
      scale - (undocumented)
      Returns:
      (undocumented)
    • setOrNull

      public Decimal setOrNull(long unscaled, int precision, int scale)
      Set this Decimal to the given unscaled Long, with a given precision and scale, and return it, or return null if it cannot be set due to overflow.
      Parameters:
      unscaled - (undocumented)
      precision - (undocumented)
      scale - (undocumented)
      Returns:
      (undocumented)
    • set

      public Decimal set(scala.math.BigDecimal decimal, int precision, int scale)
      Set this Decimal to the given BigDecimal value, with a given precision and scale.
      Parameters:
      decimal - (undocumented)
      precision - (undocumented)
      scale - (undocumented)
      Returns:
      (undocumented)
    • set

      public Decimal set(scala.math.BigDecimal decimal)
      Set this Decimal to the given BigDecimal value, inheriting its precision and scale.
      Parameters:
      decimal - (undocumented)
      Returns:
      (undocumented)
    • set

      public Decimal set(BigInteger bigintval)
      If the value is not in the range of long, convert it to BigDecimal and the precision and scale are based on the converted value.

      This code avoids BigDecimal object allocation as possible to improve runtime efficiency

      Parameters:
      bigintval - (undocumented)
      Returns:
      (undocumented)
    • set

      public Decimal set(Decimal decimal)
      Set this Decimal to the given Decimal value.
      Parameters:
      decimal - (undocumented)
      Returns:
      (undocumented)
    • toBigDecimal

      public scala.math.BigDecimal toBigDecimal()
    • toJavaBigDecimal

      public BigDecimal toJavaBigDecimal()
    • toScalaBigInt

      public scala.math.BigInt toScalaBigInt()
    • toJavaBigInteger

      public BigInteger toJavaBigInteger()
    • toUnscaledLong

      public long toUnscaledLong()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toPlainString

      public String toPlainString()
    • toDebugString

      public String toDebugString()
    • toDouble

      public double toDouble()
    • toFloat

      public float toFloat()
    • toLong

      public long toLong()
    • toInt

      public int toInt()
    • toShort

      public short toShort()
    • toByte

      public byte toByte()
    • changePrecision

      public boolean changePrecision(int precision, int scale)
      Update precision and scale while keeping our value the same, and return true if successful.

      Parameters:
      precision - (undocumented)
      scale - (undocumented)
      Returns:
      true if successful, false if overflow would occur
    • clone

      public Decimal clone()
    • compare

      public int compare(Decimal other)
      Specified by:
      compare in interface scala.math.Ordered<Decimal>
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • isZero

      public boolean isZero()
    • quot

      public Decimal quot(Decimal that)
    • remainder

      public Decimal remainder(Decimal that)
    • abs

      public Decimal abs()
    • floor

      public Decimal floor()
    • ceil

      public Decimal ceil()