Swift中的数学函数

Gio*_*nni 94 swift

如何使用数学函数一样sqrt(),floor(),round(),sin(),等?


做的时候:

_ = floor(2.0)
_ = sqrt(2.0)
Run Code Online (Sandbox Code Playgroud)

我明白了:

错误:使用未解析的标识符'floor'
错误:使用未解析的标识符'sqrt'

在此输入图像描述

Tom*_*art 97

正如其他人所说,你有几种选择.如果你只想要数学函数.您只能导入达尔文.

import Darwin
Run Code Online (Sandbox Code Playgroud)

如果你想要数学函数和其他标准类和函数.您可以导入Foundation.

import Foundation
Run Code Online (Sandbox Code Playgroud)

如果您想要用户界面的所有内容和类,则取决于您的操场是否适用于OS X或iOS.

对于OS X,您需要导入Cocoa.

import Cocoa
Run Code Online (Sandbox Code Playgroud)

对于iOS,您需要导入UIKit.

import UIKit
Run Code Online (Sandbox Code Playgroud)

您可以通过打开文件检查器(⌥⌘1)轻松发现您的游乐场平台.

游乐场设置 - 平台

  • 在Swift游乐场,我得到错误:`没有这样的模块'Cocoa' (6认同)
  • UIKit,Cocoa,Foundation,所有有效选择. (4认同)

bpr*_*les 78

确切地说,达尔文已经足够了.无需导入整个Cocoa框架.

import Darwin
Run Code Online (Sandbox Code Playgroud)

当然,如果您需要来自Cocoa或Foundation或其他更高级别框架的元素,您可以改为导入它们


sma*_*c89 17

对于在Linux上使用swift [2.2]的人,即Ubuntu,导入是不同的!

正确的方法是使用Glibc.这是因为在OS X和iOS上,基本类Unix的API在Darwin中,但在linux中,它们位于Glibc中.导入基金会在这里不会帮助你,因为它本身没有区别.为此,您必须自己明确导入它:

#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
Run Code Online (Sandbox Code Playgroud)

您可以在此处关注Foundation框架的开发以了解更多信息


编辑:2018年12月26日

正如指出@心教堂,迅速从3.0开始一些数学函数现在是该类型本身的一部分.例如,Double现在有一个squareRoot函数.同样,ceil,floor,round,都可以与实现Double.rounded(FloatingPointRoundingRule) -> Double.

此外,我刚刚在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
Run Code Online (Sandbox Code Playgroud)


Ben*_*ieb 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)")
Run Code Online (Sandbox Code Playgroud)


Dan*_*tar 8

要使用必须的数学函数 import Cocoa

您可以通过以下方式查看其他已定义的数学函数.创建一个Cmd-单击函数名称,sqrt然后输入包含所有其他全局数学函数和constanst的文件.

该文件的一小部分

...
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)        */
...
Run Code Online (Sandbox Code Playgroud)

  • 这不正确,已经存在有效答案. (2认同)
  • 这不是一个正确的答案.它们不是全球功能.你必须`导入Cocoa`才能使用它们. (2认同)