Jar*_*ron 0 trigonometry swift
当我在计算器上使用 cos 函数 cos(0) = 1、cos(90) = 0 cos(180) = -1 和 cos(270) = 0 时。但是我不知道如何在我的计算机中产生这些结果代码。我在代码中收到的结果不是 1 就是 -1,但绝不是 0。下面是我尝试过的结果,但没有一个给出与计算器相同的结果,我错过了什么?
print(cos(0)) // receiver error "Ambiguous use of 'cos'"
print(cos(90)) // receiver error "Ambiguous use of 'cos'"
print(cos(180)) // receiver error "Ambiguous use of 'cos'"
print(cos(270)) // receiver error "Ambiguous use of 'cos'"
print(cos(M_PI*0)) // returns 1
print(cos(M_PI*1)) // returns -1
print(cos(M_PI*2)) // returns 1
print(cos(M_PI*3)) // returns -1
print(cos(M_PI*0)) // returns 1
print(cos(M_PI*90)) // returns 1
print(cos(M_PI*180)) // returns 1
print(cos(M_PI*270)) // returns 1
print(cos(M_PI/M_PI-1)) // returns 1
print(cos(M_PI/M_PI+89)) // returns -0.44
print(cos(M_PI/M_PI+179)) // returns -0.59
print(cos(M_PI/M_PI+269)) // reutnrs 0.98
Run Code Online (Sandbox Code Playgroud)
下面重复 1, 0, -1, 0 的结果:
var x: Double = 0
while x < 100 {
print(Int(cos(M_PI*(x*0.5))))
x = x + 1
}
Run Code Online (Sandbox Code Playgroud)
三角函数Darwin以弧度为单位。
print(cos(0)) // receiver error "Ambiguous use of 'cos'"
print(cos(90)) // receiver error "Ambiguous use of 'cos'"
print(cos(180)) // receiver error "Ambiguous use of 'cos'"
print(cos(270)) // receiver error "Ambiguous use of 'cos'"
Run Code Online (Sandbox Code Playgroud)
这些是不明确的,因为 cos 有两个版本,这两种类型:
(Double) -> Double(Float) -> Float和Double都Float符合ExpressibleByIntegerLiteral,所以两者都可以用 来表示Int。对于Int应该表达这两种类型中的哪一种是不明确的。
如果您想要该Double版本,可以使用以下方式调用它:
cos(0 as Double)cos(0.0)因为直接使用 floatliteral 作为 aDouble优先于通过 的转换expressiblebyfloatliteral。如果您想要Float version,您可以使用以下方式调用它:cos(0 as Float)
在这两种情况下,如果上下文提供了足够的信息,则可以解决歧义。例如:
functionThatTakesADouble(cos(0)) // will use the `(Double) -> Double` version
functionThatTakesAFloat(cos(0)) // will use the `(Float) -> Float` version
print(cos(M_PI*0)) // M_PI is a Double, so 0 is treated as a Double
Run Code Online (Sandbox Code Playgroud)
解决类型歧义后,如下所示:
print(cos(0.0)) // 1.0
print(cos(90.0)) // -0.44807361612917
print(cos(180.0)) // -0.598460069057858
print(cos(270.0)) // 0.984381950632505
Run Code Online (Sandbox Code Playgroud)
我们得到正确的答案。请记住,系统三角函数以弧度为单位。
print(cos(M_PI*0)) // returns 1
print(cos(M_PI*1)) // returns -1
print(cos(M_PI*2)) // returns 1
print(cos(M_PI*3)) // returns -1
Run Code Online (Sandbox Code Playgroud)
这些都是正确的值。
print(cos(M_PI*0)) // returns 1
print(cos(M_PI*90)) // returns 1
print(cos(M_PI*180)) // returns 1
print(cos(M_PI*270)) // returns 1
Run Code Online (Sandbox Code Playgroud)
这些也是正确的。cos是1针对每个弧度的偶数倍pi。
print(cos(M_PI/M_PI-1)) // returns 1
print(cos(M_PI/M_PI+89)) // returns -0.44
print(cos(M_PI/M_PI+179)) // returns -0.59
print(cos(M_PI/M_PI+269)) // reutnrs 0.98
Run Code Online (Sandbox Code Playgroud)
M_PI/M_PI是1.0(作为 a Double),因此这些情况与第一种情况等效,但具有允许编译器明确选择 所必需的额外类型(Double) -> Double cos信息(Float) -> Float。
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |