티스토리 뷰

 코틀린에서도 산술 연산자가 당연히 있다. 다른 언어와 차이점이 크게 없는데 다른 점도 또한 있으니 이번 글을 통해서 한 번 알아가기를 바랍니다. 🍕

예제 코드

fun main(args:Array<String>):Unit {
    val num:Int = 15 - 3 * 3
    val num2:Int = 65 % 6
    val num3:Double = 7.5 / 3 + 22.75
    val num4:Double = num / num2 + 0.7

    println(num)
    println(num2)
    println(num3)
    println(num4)

    val num5:Double = num.toDouble() / num2 + 0.7
    println(num5)
}
6
5
25.25
1.7
1.9

Process finished with exit code 0
  • a - b : a에서 b를 뺍니다.
  • a + b : a에서 b를 더합니다.
  • a * b : a에 b를 곱합니다.
  • a / b : a를 b로 나눕니다.
  • a % b : a를 b로 나눈 나머지를 구합니다.

 정말 간단하죠? 🍔 여기서 알아야 할 점은 수학식을 계산할 때와 마찬가지로 연산자들에도 우선순위가 부여됩니다. 곱셈과 나눗셈이 덧셈과 뺄셈보다 우선되어 계산됩니다. % 연산자로는 나머지를 구할 수 있는데 이 연산자 또한 우선순위가 있으며 +, - 보다 높은 우선순위를 갖는다는 점을 주의해야 합니다.

 이때 num4, num5의 결과가 다른 점을 주목해야 합니다.

num4는 Int형인 num과 num2를 나누기 연산을 했습니다. 🍟 이럴 경우 두 개의 타입이 Int형 이므로 나눗셈 연산을 해도 결과는 Int형인 정수로 소수점 부분은 손실됩니다.

 그렇기 때문에 보통 형 변환을 통해 한쪽의 형식을 변환 후 계산해줍니다. (의도한 것이 아니라면 말이죠.)

 저는 보통 1.0을 곱해주는 방법을 사용합니다. 🌭 하지만 여기서는 num5를 보시면 .toDouble() 이라는 함수를 통해서 Int형을 double 형식으로 변환해준 뒤 연산을 실행했습니다.

 사실 코틀린에서도 캐스팅하는 키워드가 있으나 Int와 Double은 서로 상속관계가 아니기 때문에 캐스팅을 통한 형 변환이 불가능하다고 합니다. 🍗

 아무튼 num5의 결과를 보면 소수점 또한 온전하게 보전되어 계산되는 것을 확인할 수 있습니다. 이는 조그만 차이처럼 보일 수 있으나 프로그래밍을 할 때 굉장히 중요한 부분이기 때문에 이러한 부분까지 세세하게 체크하는 것이 아주 중요합니다. 🍺

 추가적으로 코틀린은 자바보다 더 엄격한 타입 검사를 진행하기 때문에 double 형에 int형을 넣는다는 것은 아예 불가능합니다. (자바에서는 착하게도 알아서 변환을 해주었죠 ☕)

 여기까지 코틀린의 기초 중에서 연산자 부분을 알아보았습니다.

[Android/Kotlin] - [코틀린] 리터럴(literal) 에도 type이 있다는 것을 알았는가

[Android/Kotlin] - [코틀린] 변수(Variable) 선언하기 + 상수 사용법

[Android/Kotlin] - [코틀린] 리터럴(Literal), 연산자(Operator), 표현식(Expression)

댓글
댓글쓰기 폼
네이버 이웃추가
«   2020/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
글 보관함