산술 연산의 동작은 자바와 같다. 정수 나눗셈 연산자가 항상 0 쪽으로 내림한 결과를 내놓는 반면, 나머지 연산의 결과는 항상 피제수와 같은 부호라는 사실에 유의하자. 부동소수점 수 연산은 IEEE 754 명세를 따른다.
참고로, 코틀린 1.5부터 표준 라이브러리에 정수 floorDiv()와 mod() 메서드가 추가됐다. floorDiv()는 정수 나눗셈(/) 연산과 마찬가지로 한 수를 다른 수로 나눈 몫을 계산하고, mod() 메서드는 정수 나머지(%) 연산과 마찬가지로 한 수를 다른 수로 나눈 나머지를 계산한다. 어떤 정수 a를 0이 아닌 다른 정수 b로 나누면, floorDiv()는 몫을 더 작은 정수로 내림하고, mod()는 a와 a.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씩 증가/감소시키는 ++/-- 연산도 지원한다.
단항 +/- 연산의 결과는 인자들의 타입과 같다. 다만 Byte와 Short의 경우에는 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