-
Swift5 나머지 구하기, 홀수 짝수 구하기🧑💻/Swift 2020. 8. 12. 22:37반응형
Swift에서 나머지를 구하기 위한 몇가지 방법이 있습니다.
1. % 사용
%를 사용하여 나머지를 구할 수 있습니다.
그 예로 0이면 짝수, 나머지가 1이면 홀수로 판별할 수 있습니다.
// 홀수 func isOdd(_ number: Int) -> Bool { return 1 == number % 2 } // 짝수 func isEven(_ number: Int) -> Bool { return 0 == number % 2 } print(isEven(10)) // true print(isOdd(12)) // false
주의할 점은 %를 사용하기 위해서는 피연산자가 모두 Int형이어야 합니다.
하지만 둘 중 하나라도 Float형, Double형일 경우 '%' is unavailable: For floating point numbers use truncatingRemainder instead 에러가 발생합니다.
2. truncatingRemainder(dividingBy:) 사용
Double형인 상수, 변수에 .으로 truncatingRemainder를 호출할 수 있습니다.
Int형에서 호출 시 truncatingRemainder가 자동완성되지 않지만
수동으로 호출 시 사용 가능합니다.
let remainder = 5.0.truncatingRemainder(dividingBy: 2) // 1 let remainder2 = 10.truncatingRemainder(dividingBy: 4) // 2
truncatingRemainder에 대해 검색하다 보면 remainder가 나오는데 ... 둘의 차이점을 알아봅시다.
3. truncatingRemainder vs remainder
truncatingRemainder(dividingBy:)와 remainder(dividingBy:)는 몫에 따라 나머지를 달리합니다.
var x = 8.625 let y = 0.74 (x/y).rounded(.towardZero) // 11.5 -> 11 x.truncatingRemainder(dividingBy: y) // 0.375 x == 0.75 * 11 + 0.375 (x/y).rounded(.toNearestOrEven) // 11.5 -> 12 x.remainder(dividingBy: y) // -0.375 x == 0.75 * 12 - 0.375
truncatingRemainder의 몫은 소숫점 발생 시 0에 가까운 정수입니다. >> 몫은 11, 나머지는 0.375가 됩니다.
remainder의 몫은 소숫점 발생 시 가까운 짝수 정수를 택합니다. >> 몫은 12, 나머지는 -0.375가 됩니다.
var x = -8.625 let y = -0.75 (x/y).rounded(.towardZero) // 11.5 -> 11 x.truncatingRemainder(dividingBy: y) // -0.375 x == -0.75 * 11 - 0.375 (x/y).rounded(.toNearestOrEven) // 11.5 -> 12 x.remainder(dividingBy: y) // 0.375 x == -0.75 * 12 + 0.375
같은 방법으로 음수에 적용 시 truncatingRemainder는 -0.375, remainder는 0.375가 되는 걸 알 수 있습니다.
반응형