🔥 부동 소수점 숫자
부동 소수점 숫자(Floating-Point Numbers)는 소수점 이하의 값을 가지는 숫자를 말합니다. 예를 들어 3.14159
, 0.1
, -273.15
등이 있죠.
부동 소수점 숫자는 정수형보다 훨씬 넓은 범위의 값을 표현할 수 있습니다. 정수형으로 저장할 수 없는 아주 큰 값이나 작은 값도 부동 소수점 숫자로는 저장할 수 있어요.
Swift의 부동 소수점 숫자 타입
Swift는 두 가지 종류의 부호 있는 부동 소수점 숫자 타입을 제공합니다.
Double
: 64비트 부동 소수점 숫자를 나타냅니다.Float
: 32비트 부동 소수점 숫자를 나타냅니다.
Double
은 최소 15자리의 십진수 정밀도를 가지고, Float
은 6자리 정도의 십진수 정밀도를 가집니다. 코드에서 어떤 부동 소수점 타입을 사용할지는 다루고자 하는 값의 특성과 범위에 따라 결정하면 됩니다.
만약 두 타입 중 어느 것을 써도 무방한 상황이라면 Double
을 선호하는 것이 좋습니다. Double
이 더 높은 정밀도를 제공하기 때문이에요.
부동 소수점 숫자 사용 예시
아래는 Double
과 Float
을 사용한 간단한 예시 코드입니다.
let pi: Double = 3.14159 // Double 타입의 pi 변수 선언 및 초기화 let e: Float = 2.71828 // Float 타입의 e 변수 선언 및 초기화 let sum = pi + Double(e) // Double과 Float 사이의 타입 변환 및 덧셈 연산 print(sum) // 5.85987
swift
위 코드에서 pi
는 Double
타입으로, e
는 Float
타입으로 선언 및 초기화했습니다.
Double
과 Float
사이에 연산을 하려면 먼저 타입을 일치시켜야 합니다. 여기서는 Float
타입인 e
를 Double(e)
로 Double
타입으로 변환한 뒤 덧셈을 수행했어요.
부동 소수점 숫자의 비교 연산 주의점
부동 소수점 숫자는 정확한 값을 표현하기 어려운 한계가 있습니다. 예를 들어 0.1
을 정확히 2진수로 표현할 수 없기에 근사치로 저장되죠. 따라서 부동 소수점 숫자로 비교 연산을 할 때는 주의해야 합니다.
let a = 0.1 + 0.2 // 0.30000000000000004 let b = 0.3 // 0.29999999999999998 print(a == b) // false
swift
위처럼 직관적으로는 a
와 b
가 같아 보이지만, 실제로는 미세한 차이가 있어 false
로 비교됩니다.
따라서 부동 소수점 숫자의 비교는 대신 오차 범위 내에 있는지를 검사하는 것이 좋습니다.
let tolerance = 0.00001 if abs(a - b) < tolerance { print("a와 b는 같다고 볼 수 있습니다.") } else { print("a와 b는 다릅니다.") } // a와 b는 같다고 볼 수 있습니다.
swift
abs()
는 절댓값을 구하는 함수입니다. a
와 b
의 차이의 절댓값이 오차 허용 범위인 tolerance
보다 작으면 같다고 간주하는 거죠.
이번 글에서는 Swift의 부동 소수점 숫자에 대해 알아봤습니다. 주요 내용을 정리하면 다음과 같아요.
- 부동 소수점 숫자는 소수점 이하의 값을 가지는 숫자를 말합니다.
- Swift는
Double
과Float
두 가지 부동 소수점 숫자 타입을 제공합니다. - 부동 소수점 숫자는 정확한 값 표현에 한계가 있으므로, 비교 연산 시 주의해야 합니다.
- 비교 연산은 오차 범위 내에 있는지를 검사하는 것이 좋습니다.
부동 소수점 숫자를 다룰 때는 작은 오차를 고려해야 하지만, 일상적인 계산에서는 크게 문제될 것이 없으니 걱정 마세요!