Swift 三角函数(cos, tan, arcsin, arcos, arctan)



你好,我必须以度数来区分计算,我有以下代码,但我没有返回确切的值。唯一的权利是 sin90 的值在度数 = 1

//////***** DEGREES ******//////
var sinus = sin(90.0 * M_PI / 180)
var cosinus = cos(90 * M_PI / 180)
var tangent = tan(90 * M_PI / 180)
var arcsinus = asin(90 * M_PI / 180)
var arcosinus = acos(90 * M_PI / 180)
var arctangent = atan(90 * M_PI / 180)

返回 cos、tan 及其 ARC 函数的每个操作的精确值(以度为单位)的正确操作是什么?

这与其说是 Swift 问题,不如说是一个数学问题:

let sinus = sin(90.0 * Double.pi / 180)
print("Sinus (sinus)")
let cosinus = cos(90 * Double.pi / 180)
print("Cosinus (cosinus)")
let tangent = tan(90 * Double.pi / 180)
print("Tangent (tangent)")

指纹

Sinus 1.0
Cosinus 6.12323399573677e-17
Tangent 1.63312393531954e+16

90度的正弦是1(正确)

90度的余弦为0。值 6e-17 是一个非常非常小的值,任何合理的四舍五入都会认为它等于零(正确)。您无法获得精确零的事实是由于计算中的舍入误差。

未定义 90 度的切线(sin/tan = 1/0,未定义除以零)。如果我们有精确的计算,你可能会得到无穷大。在这种情况下,我们1除以 6e-17 ,它变成一个很大的1.6e16。结果是正确的。

关于反函数,请注意一件事 - 它们的参数既不是度也不是弧度。它们的结果以度/弧度为单位,例如:

let arcsinus = asin(1.0) * 180 / Double.pi
print("Arcsinus (arcsinus)")

指纹

Arcsinus 90.0

Swift 4 使用修改后的语法:

let sinus = sin(90.0 * Double.pi / 180)
let cosinus = cos(90 * Double.pi / 180)
let tangent = tan(90 * Double.pi / 180)
let arcsinus = asin(1) * 180/ Double.pi
let arcosinus = acos(0) * 180/ Double.pi
let arctangent = atan(1) * 180/ Double.pi

最新更新