코틀린 자료형 - 숫자(Numbers)

황승현·2023년 12월 8일
0

코틀린 강의 정리

목록 보기
6/36
post-thumbnail

개요

코틀린은 숫자를 표현하기 위해 정수형 데이터 타입(Integer Types)과 실수형 데이터 타입(Floating-point types)을 제공한다.

정수 자료형(Integer types)

  • 정수 타입을 표현하기 위해서 4가지 키워드가 존재한다.
TypeSizeMin valueMax value
Byte8 bits (1byte)27-2^7 (-128)2712^7-1 (127)
Short16 bits (2byte)215-2^{15} (-32768)21512^{15}-1 (32767)
Int32 bits (4byte)231-2^{31} (-2,147,483,648)23112^{31}-1 (2,147,483,647)
Long64 bits (8byte)263-2^{63} (-9,223,372,036,854,775,808)26312^{63}-1 (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 integer types)

또한 코틀린에서는 음의 부호를 사용하지 않는 정수 자료형도 제공한다.

Unsigned 타입인 걸 알려주려면 접미사로 u 또는 U 태그를 붙인다.

ULong 타입은 접미사로 ul 또는 UL 태그를 사용해도 된다.

TypeSizeMin valueMax value
UByte8 bits (1byte)02812^8-1 (28+281=2552^8 + 2^8-1 = 255)
UShort16 bits (2byte)021612^{16}-1 (216+2161=655352^{16} + 2^{16}-1 = 65535)
UInt32 bits (3byte)023212^{32} -1 (231+23112^{31} + 2^{31} - 1)
ULong64 bits (4byte)026412^{64} -1 (263+26312^{63} + 2^{63} - 1)
// 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 Interger Types을 사용하는 이유

절대로 음수가 될 수 없는 값을 사용할 경우 유용하다 (키, 몸무게, 나이 등)

음수를 사용할 필요가 없을 경우 Unsigned 타입을 사용하면 더 넓은 범위의 값을 저장할 수 있다.

실수 자료형(Floating-point types)

  • 실수 타입을 표현하기 위해서 2가지 키워드가 존재한다.
TypeSizeSignificant bits (유효숫자)Exponent bits (지수)Decimal digits
Float32 bits (4byte)2486-7
Double64 bits (8byte)531115-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

0개의 댓글