Numeric Data Types

Scala’s numeric data types:

  • Byte
  • Short
  • Int
  • Long
  • Float
  • Double
  • BigInt
  • BigDecimal

Int and Double are the defaults:

val a = 1      // Int
val b = 2.2    // Double

Examples of how to create them:

val a = 1_000
val a: Long = 1_000
val a = 1_000L

val a: Byte = 1
val b: Short = 1
val c: Int = 1
val d: Long = 1
val e: Float = 1
val f: Double = 1

val bi = BigInt(1_234_567)
val bd = BigDecimal(1_234_567.123)

The types really only make sense if you know their ranges:

DATA TYPE  DEFINITION

Byte       8-bit signed two's complement integer (-2^7 to 2^7-1, inclusive)
           -128 to 127

Short      16-bit signed two's complement integer (-2^15 to 2^15-1, inclusive)
           -32,768 to 32,767

Int        32-bit two's complement integer (-2^31 to 2^31-1, inclusive)
           -2,147,483,648 to 2,147,483,647

Long       64-bit two's complement integer (-2^63 to 2^63-1, inclusive)
           -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807

Float      32-bit IEEE 754 single-precision float
           1.40129846432481707e-45 to 3.40282346638528860e+38 (positive or negative)

Double     64-bit IEEE 754 double-precision float
           4.94065645841246544e-324 to 1.79769313486231570e+308 (positive or negative)

Char       16-bit unsigned Unicode character (0 to 2^16-1, inclusive)
           0 to 65,535

Currency:

  • Most devs use BigDecimal or Long for currency (in addition to libraries)