코틀린은 숫자를 표현하기 위해 정수형 데이터 타입(Integer Types)과 실수형 데이터 타입(Floating-point types)을 제공한다.
| Type | Size | Min value | Max value |
|---|---|---|---|
| Byte | 8 bits (1byte) | (-128) | (127) |
| Short | 16 bits (2byte) | (-32768) | (32767) |
| Int | 32 bits (4byte) | (-2,147,483,648) | (2,147,483,647) |
| Long | 64 bits (8byte) | (-9,223,372,036,854,775,808) | (9,223,372,036,854,775,807) |
코틀린은 자료형 추론을 지원하기 때문에
자료형을 지정하지 않고 변수를 선언해도 컴파일러가 변수의 자료형을 추론하여 나타낸다.
보통 정수의 경우 Int형으로 추론하기 때문에 작은 범위는 명시적으로 지정해야 한다.
// Byte 타입 명시적으로 선언하는 법
val oneByte: Byte = 1
// Short 타입 명시적으로 선언하는 법
val oneShort: Short = 1
// Int 타입인 걸 명시하지 않아도 컴파일러가 Int 타입으로 추론함
val one = 1
// Int 타입 명시적으로 선언하는 법
val oneInt : Int = 1
// Long 타입인 걸 명시하지 않아도 컴파일러가 Long 타입으로 추론함
val threeBillion = 3000000000 // Int 범위를 넘어감
val oneLong = 1L // Long형
또한 코틀린에서는 음의 부호를 사용하지 않는 정수 자료형도 제공한다.
Unsigned 타입인 걸 알려주려면 접미사로 u 또는 U 태그를 붙인다.
ULong 타입은 접미사로 ul 또는 UL 태그를 사용해도 된다.
| Type | Size | Min value | Max value |
|---|---|---|---|
| UByte | 8 bits (1byte) | 0 | () |
| UShort | 16 bits (2byte) | 0 | () |
| UInt | 32 bits (3byte) | 0 | () |
| ULong | 64 bits (4byte) | 0 | () |
// Byte 타입 명시적으로 선언하는 법
val oneByte: UByte = 1u
// Short 타입 명시적으로 선언하는 법
val oneShort: UShort = 1u
// UInt 타입인 걸 명시하지 않아도 컴파일러가 UInt 타입으로 추론함
val one = 1u
// Int 타입 명시적으로 선언하는 법
val oneInt : Int = 1u
// ULong 타입 명시적으로 선언하는 법
val threeBillion = 5000000000u
val oneLong: ULong = 1u
val a = 1ul // ULong, even though no expected type provided and constant fits into UInt
val b = 1UL // ULong, even though no expected type provided and constant fits into UInt
절대로 음수가 될 수 없는 값을 사용할 경우 유용하다 (키, 몸무게, 나이 등)
음수를 사용할 필요가 없을 경우 Unsigned 타입을 사용하면 더 넓은 범위의 값을 저장할 수 있다.
| Type | Size | Significant bits (유효숫자) | Exponent bits (지수) | Decimal digits |
|---|---|---|---|---|
| Float | 32 bits (4byte) | 24 | 8 | 6-7 |
| Double | 64 bits (8byte) | 53 | 11 | 15-16 |
프로그램에서는 실수를 표현하기 위하여 부동소수점 방식을 사용한다.
보통 실수의 경우 Double형으로 추론하기 때문에 작은 범위는 명시적으로 지정해야 한다.
Float 타입인 걸 알려주려면 접미사에 f 또는 F를 붙인다.
// float 타입 명시적으로 선언하는 법
val fPi : Float = 3.14f
// Double 타입인 걸 명시하지 않아도 컴파일러가 자동으로 Double 타입으로 추론함
val pi = 1.0
// Double 타입 명시적으로 선언하는 법
val pi2 : Double = 3.14
https://kotlinlang.org/docs/numbers.html
https://kotlinlang.org/docs/unsigned-integer-types.html
https://enter.tistory.com/235