2016-03-03 170 views
5

hello我必须以度数进行differenciate计算,并且我有以下代码,但我没有返回确切的值。唯一的一个权利,是度sin90的值= 1快速三角函数(cos,tan,arcsin,arcos,arctan)

//////***** 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) 

什么是返回为余弦,正切和他们的ARC功能程度的每个操作的精确值正确操作?

+0

'sin',其余采取_angle在radians_作为参数。为什么你在后面做这个'90 * 180/M_PI'的东西? – courteouselk

+0

你能写出你的答案在一段代码中的值为90吗?因为我真的不明白你的意思.. :)抱歉,我是新的@AntonBronnikov – kepi

回答

10

这更是一个数学问题比夫特问题:

let sinus = sin(90.0 * M_PI/180) 
print("Sinus \(sinus)") 

let cosinus = cos(90 * M_PI/180) 
print("Cosinus \(cosinus)") 

let tangent = tan(90 * M_PI/180) 
print("Tangent \(tangent)") 

打印

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

窦为1(正确)

90度的Cos是0。值6e-17是一个非常小的值,任何明智的四舍五入将认为它等于零(正确)。由于计算中的舍入误差,您无法精确到零的事实。

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

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

let arcsinus = asin(1.0) * 180/M_PI 
print("Arcsinus \(arcsinus)") 

打印

Arcsinus 90.0 
+0

谢谢sooooo多!!!! – kepi

+0

那么,我不需要改变什么?我的代码是正确的,因为它是? @Sulthan?任何方式返回并显示正确的值在显示器上? – kepi

+0

@kepi您的结果是正确的,要将它们显示给用户,您必须首先将它们转换为字符串。我会推荐'NSNumberFormatter'来处理舍入和格式。 – Sulthan