How to convert from String to CGFloat
개발 중에 자주 사용 되는 형변환은 문자열의 숫자형 변환 또는 숫자의 문자열형 변환일 겁니다. 일반적으로 형변환은 아래와 같이 실행하면 형변환이 됩니다.
piDouble : 3.14159265359
형 변환 시 잘못된 경우 nil이 반환되어야 하므로 nil이 허용되어야 합니다. 때문에 형 변환에 Double 뒤에 "?"가 붙어야 하고, 출력 시에도 piDouble값이 nil인지 체크되어야 합니다.
CGFloat란?
CGFloat란 무엇일까요? 일반적으로 개발언어에서는 float와 double 또는 둘 중 한 개의 형태만 제공하는데, SwiftUI에서는 CGFloat라는 녀석을 제공합니다.
Float : 실수형 단정밀도 32비트 부동 소수형
Double : 실수형 배정밀도 64비트 부동 소수형
CGFloat : 플랫폼에 따라 32비트는 float, 64비트에서는 double로 사용되는 실수형. CPU 아키텍처에 따라 다름
Invalid Case
// invalid case #1
var piNum:CGFloat = str as CGFloat
Error : Cannot convert value of type 'String' to type 'CGFloat' in coercion
// invalid case #2
var piNum:CGFloat = CGFloat(from:str)
Error : Argument type 'String' does not conform to expected type 'Decoder'
방법 #1
piNum01 : 3.14159265359
여기에서 주의할 점은 doubleValue부분에 floatValue를 사용하면 값이 잘못 변환될 수도 있다는 점입니다.
만약 아래와 같은 순서대로 출력해본다고 가정하면
print((str as NSString))
print((str as NSString).floatValue)
print(CGFloat((str as NSString).floatValue))
값이 floatValue가 씌어질 때 반올림 된 이후 CGFloat 형변환이 되면서 잘못된 값으로 변환되는 것을 보실 수 있습니다.
floatValue에서 CGFloat로 형변환 되면서 값이 이상해짐
방법 #2
piNum02 : 3.14159265359
전체 테스트 소스
'개발 창고 > iOS' 카테고리의 다른 글
[SwiftUI] How to Make an Array of Strings a String (0) | 2023.11.26 |
---|---|
[SwiftUI] AdMob 적용하기 (0) | 2023.11.24 |
[SwiftUI] How to Add Google Ads Plugins (0) | 2023.10.29 |
[SwiftUI] 두 개 이상의 문자열을 합치는 방법 (0) | 2023.08.08 |
[SwiftUI] 나머지 값을 구하는 방법 (0) | 2023.08.07 |