4

重複の可能性:
sin()がここで正しい値を返さないのはなぜですか?

sinf()でサイン( )やコサイン()などcost()の数学演算を実行するアプリを作成していfloatsます。さて、90(1)で副鼻腔を計算しようとすると、0.89の結果が得られました...これは非常に間違っています。結果がそれほど悪い理由はありますか?それを改善する方法はありますか?double代わりに使ってみfloatたところ、同じ答えが返ってきました...シミュレーターで実行したときと同じように、実際のiPhoneで正常に動作する可能性はありますか?そして最後に、数学パーサーを使用すると、結果の精度が向上しますかGCMathParserDDMathParser

ありがとう、 :]

4

4 に答える 4

10

および関数はラジアンを使用sinfします。cosf最初に変換する必要があります:

float result = sinf(yourDegree / 180 * M_PI);
于 2012-08-15T17:10:32.177 に答える
9

問題は、度ではなく、90ラジアンの正弦をと​​っているということです。sin(M_PI_2)を90°試してみてください

関数は度ではなくラジアンを使用します。

度をラジアンに変換するには、度*π/ 180を使用するので、sin(90 * M_PI / 180)のようにπ/2またはM_PI_2に減らすことができます。

sin()が正しい値を返さないのはなぜですか?

于 2012-08-15T17:13:48.953 に答える
2

いつものように:これらの関数は度ではなくラジアンで機能します。

の正弦を計算してみてくださいπ/2。これはラジアンで90°です。

于 2012-08-15T17:10:22.987 に答える
1

Objective-cの三角関数はラジアン単位の角度を取ります。あなたは度で議論をしている。90ラジアンの罪は0.89です。

見る:

http://www.wolframalpha.com/input/?i=sin%2890+rad%29

度に変換するには、度数を180で割り、円周率を掛けます(3.14159で十分です)。

変換されると、答えは予想どおり1になります。

http://www.wolframalpha.com/input/?i=sin%2890 * pi%2F180 + rad%29

于 2012-08-15T17:16:37.320 に答える