Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- FlexLayout
- authentication
- Xcode
- Automatic Reference Count
- fetchSignInMethods
- Nan
- ios
- Tuist
- garbage collection
- YGEnums.h
- Swift
- SPM
- HIG
- HealthKit
- human interface guidelines
- pagination
- Tuist-Action
- AppStore
- Firebase
- 회고
- App Connect
- Github-Action
- UITest
- content-type
- layoutSubviews
- rc
- alamofire
- playground
- arc
- retain cycle
Archives
- Today
- Total
멋있게걷는방법
[Swift] 값이 NaN 으로 변한다구요? 본문
프로젝트를 진행 중 처음 보는 NaN이라는 형태를 발견하고 공부해 보았습니다.
매개변수를 받아서 백분율로 변환하는 함수를 실행 중에 발생했습니다.
예를 들어
func sum(a: Double, b: Double) {
let sum = a + b
let firstP = a / sum * 100.0
let secondP = b / sum * 100.0
print(firstP)
print(secondP)
}
위와 같은 함수가 있다고 했을 때, a = 0, b = 0을 매개변수로 전달하면 firstP와 secondP는 어떻게 될까요?
NaN 이 됩니다.
NaN
NaN 은 Not a Number의 약자로 '숫자가 아니다', '정상적인 값이 아니다' 등으로 해석될 수 있는데요.
수학적으로 정상적인 연산이 불가함에도 불구하고 억지로 연산이 이루어질 경우 발생한다고 합니다.
위의 예시를 풀어써보면,
firstP = 0 / 0.0 * 100.0
secondP = 0 / 0.0 * 100.0
이렇게 됩니다.
0을 0.0으로 나누면 즉 0/0 꼴은 존재할 수 없기 때문에 정상적인 값이 아니다라고 판단하고 NaN이라고 알려주는 것이죠.
그렇다면
1/0.0 꼴이라면 어떨까요?inf
라는 값이 나옵니다.
inf는 느낌 오다시피 infinity 즉 무한을 의미합니다.
그럼
1/0 꼴이라면 어떨까요?
'division by zero'라는 에러가 발생합니다.
0으로 나눌 수 없다는 뜻이죠!
그럼 1/0.0 꼴일 때 inf라는 값이 나오는 이유는 뭘까요?
y=1/x에서 x 가 0일 때 y는 무한값이다.
이때 정수형은 무한값을 지원하지 않기 때문에 division by zero 에러를 발생시키고,
실수형은 무한값을 지원하기 때문에 결과로 infinity를 나타내는 inf 가 나온다!
NaN 값에 대해서 궁금하여 공부하다가 inf 값은 우연히 발견하여 조금 공부해 보았습니다.
개발 중 NaN 값이 발생한다면. isNaN 속성을 이용하여 해결해보셨으면 좋겠습니다 ㅎㅎ
읽어주셔서 감사합니다.
참고
'iOS' 카테고리의 다른 글
[Swift] firebase - 이메일 중복 검사 (0) | 2023.04.12 |
---|---|
[UITest] password textFiled 에 tap 이 안 될 때? (0) | 2023.04.04 |
[Swift] Alamofire 를 쓴다면 꼭 알아야 하는 내용 (0) | 2023.03.23 |
[Swift] HealthKit 설정과 데이터 요청 (distanceWalkingRunning, activeEnergyBurned, appleExerciseTime) (0) | 2023.03.07 |
나의 첫 App Store 심사 회고 (1) | 2022.10.10 |