더북(TheBook)

산술 연산의 동작은 자바와 같다. 정수 나눗셈 연산자가 항상 0 쪽으로 내림한 결과를 내놓는 반면, 나머지 연산의 결과는 항상 피제수와 같은 부호라는 사실에 유의하자. 부동소수점 수 연산은 IEEE 754 명세를 따른다.

참고로, 코틀린 1.5부터 표준 라이브러리에 정수 floorDiv()mod() 메서드가 추가됐다. floorDiv()는 정수 나눗셈(/) 연산과 마찬가지로 한 수를 다른 수로 나눈 몫을 계산하고, mod() 메서드는 정수 나머지(%) 연산과 마찬가지로 한 수를 다른 수로 나눈 나머지를 계산한다. 어떤 정수 a를 0이 아닌 다른 정수 b로 나누면, floorDiv()는 몫을 더 작은 정수로 내림하고, mod()aa.floorDiv(b)*b의 차이를 반환한다. 이렇게 계산한 나머지 값의 부호는 항상 b의 부호와 같다.

println(7.floorDiv(4))       // 1
println((-7).floorDiv(4))    // -2
println(7.floorDiv(-4))      // -2
println((-7).floorDiv(-4))   // 1
println(7.mod(4))            // 3
println((-7).mod(4))         // 1
println(7.mod(-4))           // -1
println((-7).mod(-4))        // -3

수 타입은 값을 1씩 증가/감소시키는 ++/-- 연산도 지원한다.

단항 +/- 연산의 결과는 인자들의 타입과 같다. 다만 ByteShort의 경우에는 Int를 내놓는다.

val byte: Byte = 1
val int = 1
val long = 1L
val float = 1.5f
val double = 1.5
-byte      // -1: Int
-int       // -1: Int
-long      // -1: Long
-float     // -1.5: Float
-double    // -1.5: Double
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.