2016-03-03 5 views
5

こんにちは私は次のコードを持っていますが、私は正確な値を返しません。右の程度にsin90の値である= 1swift trigonometric functions(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) 

一つだけは、COS、日焼け及びそのARC機能に度ですべての操作のための正確な値を返すために右の操作は何ですか?

+0

'sin'、残りの引数としてradians_に_angleを取ります。あなたはなぜこの '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)") 

プリント

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

90度の洞は、90度の1(正しい)

余弦0です。値6e-17は非常に小さい値であり、任意の感覚的な四捨五入はゼロとみなします(正しい)。正確にゼロを得ることができないという事実は、計算の丸め誤差によるものです。

90度の接線は定義されていません(sin/tan = 1/0、ゼロ除算は定義されていません)。正確な計算ができれば、おそらく無限大になるでしょう。この場合、16e-17で割ったものが多く、1.6e16となります。結果は正しい。

逆関数については、パラメータが度またはラジアンでないことに注意してください。その結果は、例えば度/ラジアンである:

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

プリント

Arcsinus 90.0 
+0

あなたsoooooをありがとう!!!! – kepi

+0

なので、何か変更する必要はありませんか?私のコードは正しいですか? @スルタン?ディスプレイに正しい値を返して表示する方法はありますか? – kepi

+0

@kepiあなたの結果は正しいです、それらをユーザーに表示するには、まず文字列に変換する必要があります。私はあなたのために丸めと書式設定を扱う 'NSNumberFormatter'をお勧めします。 – Sulthan

関連する問題