본문 바로가기
개발&프로그래밍

[Kotlin] 숫자 타입과 연산 가이드

by 재아군 2024. 8. 10.

Kotlin의 숫자 타입과 연산 가이드

Kotlin에서 숫자를 다루는 방법과 관련된 다양한 개념을 살펴봅니다.

 


 

정수 타입 (Integer types)

Kotlin은 숫자를 표현하기 위한 내장 타입 세트를 제공합니다. 정수의 경우, 크기와 값 범위가 다른 네 가지 타입이 있습니다:

타입 크기 (비트) 최솟값 최댓값
Byte 8 -128 127
Short 16 -32768 32767
Int 32 -2,147,483,648 2,147,483,647
Long 64 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

명시적 타입 지정 없이 변수를 초기화할 때, 컴파일러는 Int부터 시작하여 값을 표현하기에 충분한 가장 작은 범위의 타입을 자동으로 추론합니다. Long 값을 명시적으로 지정하려면 값 뒤에 L 접미사를 붙입니다.

val one = 1 // Int
val threeBillion = 3000000000 // Long
val oneLong = 1L // Long
val oneByte: Byte = 1

 

 

부동 소수점 타입 (Floating-point types)

실수를 위해 Kotlin은 IEEE 754 표준을 따르는 Float와 Double 타입을 제공합니다:

타입 크기 (비트) 유효 비트 지수 비트 십진 자릿수
Float 32 24 8 6-7
Double 64 53 11 15-16

소수부가 있는 숫자로 Double과 Float 변수를 초기화할 수 있습니다:

val pi = 3.14 // Double
val oneDouble = 1.0 // Double
val e = 2.7182818284 // Double
val eFloat = 2.7182818284f // Float, 실제 값은 2.7182817

Kotlin에서는 다른 언어와 달리 숫자에 대한 암시적 확장 변환이 없습니다.

 

 

숫자 리터럴 상수 (Literal constants for numbers)

정수 값을 위한 리터럴 상수의 종류:

  • 10진수: 123
  • Long 타입: 123L
  • 16진수: 0x0F
  • 2진수: 0b00001011

부동 소수점 숫자를 위한 표기법:

  • 기본적으로 Double: 123.5, 123.5e10
  • Float는 f 또는 F로 표시: 123.5f

가독성을 위해 밑줄을 사용할 수 있습니다:

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

 

 

JVM에서의 숫자 표현 (Numbers representation on the JVM)

JVM 플랫폼에서 숫자는 기본적으로 프리미티브 타입으로 저장되지만, 널이 가능한 숫자 참조나 제네릭을 사용할 때는 박싱됩니다.

val a: Int = 100
val boxedA: Int? = a
val anotherBoxedA: Int? = a

val b: Int = 10000
val boxedB: Int? = b
val anotherBoxedB: Int? = b

println(boxedA === anotherBoxedA) // true
println(boxedB === anotherBoxedB) // false

 

 

명시적 숫자 변환 (Explicit number conversions)

작은 타입은 큰 타입의 하위 타입이 아니므로, 명시적 변환이 필요합니다:

val b: Byte = 1
val i1: Int = b.toInt()

모든 숫자 타입은 다른 타입으로의 변환을 지원합니다: toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble()

 

 

숫자 연산 (Operations on numbers)

Kotlin은 표준 산술 연산을 지원합니다: +, -, *, /, %

정수 나눗셈의 결과는 항상 정수입니다:

val x = 5 / 2
println(x == 2) // true

부동 소수점 결과를 얻으려면 피연산자 중 하나를 명시적으로 변환해야 합니다:

val x = 5 / 2.toDouble()
println(x == 2.5) // true

 

 

비트 연산 (Bitwise operations)

Kotlin은 정수에 대한 비트 연산을 제공합니다:

val x = (1 shl 2) and 0x000FF000

비트 연산 목록: shl, shr, ushr, and, or, xor, inv

 

 

부동 소수점 숫자 비교 (Floating-point numbers comparison)

부동 소수점 숫자의 비교는 IEEE 754 표준을 따르지만, Any, Comparable<...>, Collection<T> 등의 타입에 대해서는 다르게 동작합니다:

println(Double.NaN == Double.NaN)                 // false
println(listOf(Double.NaN) == listOf(Double.NaN)) // true

println(0.0 == -0.0)                              // true
println(listOf(0.0) == listOf(-0.0))              // false

println(listOf(Double.NaN, Double.POSITIVE_INFINITY, 0.0, -0.0).sorted())
// [-0.0, 0.0, Infinity, NaN]

 

이 가이드를 통해 Kotlin에서 숫자를 다루는 다양한 방법과 주의사항을 이해할 수 있습니다.

효율적이고 안전한 코드 작성에 도움이 될 것입니다.

 

 

이 블로그의 다른글 : 

2024.08.10 - [개발&프로그래밍] - [kotlin] 코딩 컨벤션 - lambdas, Trailing commas

 

[kotlin] 코딩 컨벤션 - lambdas, Trailing commas

Kotlin 코딩 컨벤션 가이드Kotlin을 사용하여 더 깔끔하고 일관된 코드를 작성하기 위한 고급 코딩 컨벤션을 소개합니다.아래글은 공식 홈페이지를 참고하였습니다.https://kotlinlang.org/docs/coding-convent

observerlife.tistory.com

 

2024.08.09 - [개발&프로그래밍] - [kotlin] 코딩 컨벤션 (coding conventions)

 

[kotlin] 코딩 컨벤션 (coding conventions)

Kotlin 코딩 컨벤션 가이드 Kotlin 프로그래밍 언어를 사용할 때 따라야 할 코딩 컨벤션에 대한 종합적인 가이드입니다.이 가이드라인을 따르면 코드의 일관성과 가독성을 높일 수 있습니다. 이

observerlife.tistory.com

 

2024.08.09 - [개발&프로그래밍] - [kotlin] 자주 사용되는 관용구(idiom) 모음

 

[kotlin] 자주 사용되는 관용구(idiom) 모음

이 글은 Kotlin 프로그래밍 언어에서 자주 사용되는 관용구(idiom)들의 모음입니다.각 관용구에 대한 설명과 예제 코드를 함께 설명합니다.공식 홈페이지 kotlinlang.org의 내용을 참고합

observerlife.tistory.com

2024.08.07 - [개발&프로그래밍] - [kotlin] 입문시 알아야 할 8가지 핵심 문법

 

[kotlin] 입문시 알아야 할 8가지 핵심 문법

Kotlin의 주요 문법 특징들을 간략히 정리한 것입니다.각 항목은 Kotlin의 간결하고 표현력 있는 코드 작성을 지원하는 특징들을 보여줍니다. 아래 문서는 kotlinlang.org 공식 홈페이지를 참조합니다.

observerlife.tistory.com

 

2024.08.07 - [개발&프로그래밍] - [kotlin] 입문시 알아야 할 7가지 핵심 문법

 

[kotlin] 입문시 알아야 할 7가지 핵심 문법

Kotlin의 기본적인 문법 요소들을 간략하게 설명하고 있습니다.각 항목은 Kotlin 프로그래밍의 기초를 이해하는 데 중요한 개념들을 포함하고 있습니다. 아래 문서는 kotlinlang.org 공식 홈페이지를

observerlife.tistory.com

 

 

댓글