스위프트의 수학적 함수
다음과 같은 수학적 함수를 사용하는 방법sqrt()
,floor()
,round()
,sin()
기타?
할 때:
_ = floor(2.0)
_ = sqrt(2.0)
이해합니다.
오류: 확인되지 않은 식별자 'floor' 사용
오류: 확인되지 않은 식별자 'sqrt' 사용
다른 설명과 같이 몇 가지 옵션이 있습니다.수학적인 함수만 원한다면요.다윈만 가져올 수 있습니다.
import Darwin
수학적 함수와 다른 표준 클래스와 함수를 원한다면,Foundation을 가져올 수 있습니다.
import Foundation
사용자 인터페이스에 대한 모든 것과 클래스를 원하는 경우, 놀이터가 OS X용인지 iOS용인지에 따라 다릅니다.
OS X의 경우 코코아를 수입해야 합니다.
import Cocoa
iOS의 경우 UIKit을 Import해야 합니다.
import UIKit
파일 인스펙터(⌥1)를 열면 놀이터 플랫폼을 쉽게 찾을 수 있습니다.
정확히 말하자면, 다윈은 충분합니다.전체 코코아 프레임워크를 가져올 필요가 없습니다.
import Darwin
물론 코코아, 파운데이션 또는 다른 더 높은 수준의 프레임워크에서 요소가 필요하면 대신 가져올 수 있습니다.
Linux에서 swift [2.2]를 사용하는 사용자용.Ubuntu, 가져오기가 다릅니다!
올바른 방법은 Glibc를 사용하는 것입니다.OS X와 iOS에서는 기본적인 유닉스 계열 API가 Darwin에 있지만 Linux에서는 Glibc에 위치하기 때문입니다.Foundation을 가져오는 것만으로는 구분이 되지 않기 때문에 여기서는 도움이 되지 않습니다.이렇게 하려면 직접 가져와야 합니다.
#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
여기에서 Foundation 프레임워크의 개발 내용을 확인할 수 있습니다.
편집: 2018년 12월 26일
@Cœur가 지적했듯이 swift 3.0부터 일부 수학 함수는 이제 유형 자체의 일부입니다.예를 들어, Double에는 이제 squareRoot 함수가 있습니다.유사하게,ceil
,floor
,round
로 모든 것을 달성할 수 있습니다.
게다가 방금 Ubuntu 18.04에 swift의 최신 안정적인 버전을 다운로드하여 설치했는데, 마치Foundation
프레임워크만 가져오면 이제 수학 함수에 액세스할 수 있습니다.이에 대한 문서를 찾으려 했지만 아무 것도 나오지 않았습니다.
➜ swift
Welcome to Swift version 4.2.1 (swift-4.2.1-RELEASE). Type :help for assistance.
1> sqrt(9)
error: repl.swift:1:1: error: use of unresolved identifier 'sqrt'
sqrt(9)
^~~~
1> import Foundation
2> sqrt(9)
$R0: Double = 3
3> floor(9.3)
$R1: Double = 9
4> ceil(9.3)
$R2: Double = 10
바로 인라인에서 사용할 수 있습니다.
var square = 9.4
var floored = floor(square)
var root = sqrt(floored)
println("Starting with \(square), we rounded down to \(floored), then took the square root to end up with \(root)")
수학 함수를 사용하려면 다음 작업을 수행해야 합니다.import Cocoa
다음과 같은 방법으로 정의된 다른 수학 함수를 볼 수 있습니다.함수 이름을 Cmd-클릭합니다.sqrt
그리고 당신은 다른 모든 전역 수학 함수와 상수가 있는 파일을 입력합니다.
파일의 작은 조각
...
func pow(_: CDouble, _: CDouble) -> CDouble
func sqrtf(_: CFloat) -> CFloat
func sqrt(_: CDouble) -> CDouble
func erff(_: CFloat) -> CFloat
...
var M_LN10: CDouble { get } /* loge(10) */
var M_PI: CDouble { get } /* pi */
var M_PI_2: CDouble { get } /* pi/2 */
var M_SQRT2: CDouble { get } /* sqrt(2) */
...
Swift 방식의 작업은 Swift Standard Library에서 사용할 수 있는 도구를 사용해 볼 수 있습니다.이것들은 Swift를 실행할 수 있는 모든 플랫폼에서 작동해야 합니다.
에 에.floor()
,round()
그리고 당신이 사용할 수 있는 나머지 반올림 루틴들.rounded(_:)
:
let x = 6.5
// Equivalent to the C 'round' function:
print(x.rounded(.toNearestOrAwayFromZero))
// Prints "7.0"
// Equivalent to the C 'trunc' function:
print(x.rounded(.towardZero))
// Prints "6.0"
// Equivalent to the C 'ceil' function:
print(x.rounded(.up))
// Prints "7.0"
// Equivalent to the C 'floor' function:
print(x.rounded(.down))
// Prints "6.0"
현재다사사수있다니에서 할 수 .Float
그리고.Double
그리고 그것은 충분히 쉽게 변환될 것입니다.CGFloat
예를들면.
에 에.sqrt()
저기에 있습니다squareRoot()
메서드를 지정할 수 있습니다. 시다, 다둘 둘 다.Float
그리고.Double
에하는에 FloatingPoint
프로토콜:
let x = 4.0
let y = x.squareRoot()
삼각 함수의 경우 표준 라이브러리는 도움이 되지 않으므로 Apple 플랫폼에서 Darwin을 가져오거나 Linux에서 Glibc를 가져오는 것이 가장 좋습니다.그들은 미래에 더 나은 방법이 될 것입니다.
#if os(OSX) || os(iOS)
import Darwin
#elseif os(Linux)
import Glibc
#endif
let x = 1.571
print(sin(x))
// Prints "~1.0"
언급URL : https://stackoverflow.com/questions/24012511/mathematical-functions-in-swift
'programing' 카테고리의 다른 글
asp.net mvc 2에서 TryUpdateModel을 사용하는 시기와 이유는 무엇입니까? (0) | 2023.08.06 |
---|---|
MARIADB는 TableSpaces를 지원합니까? (0) | 2023.08.06 |
도커는 설치되어 있지만 도커 컴포지트는 설치되어 있지 않은 이유는 무엇입니까? (0) | 2023.08.06 |
SQL 화학에서 삽입할 때 중복된 기본 키 처리(선언 스타일) (0) | 2023.08.06 |
구분 기호 기반 T-SQL 분할 문자열 (0) | 2023.08.06 |