フォーラム

iOS sin、cos、tanをどのように使用しますか?

NS

MrPenguin9

オリジナルポスター
2008年8月1日
  • 2009年5月13日
iPhone SDKでsin、cos、tanをどのように使用しますか?また、それらの逆をどのように使用しますか?

ありがとう

SilentPanda

モデレーター名誉
2002年10月8日
竹林


  • 2009年5月13日
cos、sin、tanのCバージョンを使用するだけだと思います。 NS

MrPenguin9

オリジナルポスター
2008年8月1日
  • 2009年5月13日
その例を教えてください。

ありがとう

PhoneyDeveloper

2008年9月2日
  • 2009年5月13日
コード:x = sin(y);
他に何かありますか?

ターミナルにこれを入力するか、グーグルで検索してみてください

人間の罪 NS

MrPenguin9

オリジナルポスター
2008年8月1日
  • 2009年5月13日
しかし、xcodeで「tan(1)」を実行すると、1556013989が返されます!?!?しかし、1の日焼けは0.017455です...私は何が間違っているのですか?

ありがとう NS

ロンC

2008年7月18日
シカゴエリア
  • 2009年5月13日
タイプの問題のようなにおい

MrPenguin9は次のように述べています。しかし、xcodeで「tan(1)」を実行すると、1556013989が返されます!?!?しかし、1の日焼けは0.017455です...私は何が間違っているのですか?

ありがとう

1556013989?型変換を行わずに、浮動小数点形式の値を整数として出力しているだけかもしれません。

どこからこのtan()関数を取得していますか? math.h?たとえば、tan()はどのタイプを返しますか?ラジアンまたは度かかりますか?戻り値をどのタイプに格納していますか?

tan()のマニュアルページを確認したところ、次のようになっています。
コード: #include double tan(double x); long double tanl(long double x); float tanf(float x); DESCRIPTION The tan() function computes the tangent of x (measured in radians).したがって、そのシグネチャに一致する唯一の関数は、double(自動変換)を取り、double(自動変換も)を返し、ラジアンを取ります。

価値をどのように見ていますか?あなたのコードはどのように見えますか?

編集:Calculator.appでtan(1ラジアン)の値を確認しました-1.557408と表示されます。それで...なぜあなたはそれが0.017455であるべきだと思いますか?それがtan(1DEGREE)の値です NS

MrPenguin9

オリジナルポスター
2008年8月1日
  • 2009年5月13日
ここにMainView.mコードからの私のコードがあります:#import 'MainView.h' @implementation MainView -(void)awakeFromNib { Text.text = [NSString stringWithFormat:@'%d', tan(1)]; } @end (ああ、tan(x)がラジアンであることを知りませんでした。)助けてくれてありがとう! NS

ギヨン

2008年4月19日
マサチューセッツ州ケンブリッジ
  • 2009年5月13日
MrPenguin9は言った:-( void)awakeFromNib {
Text.text = [NSString stringWithFormat '%d'、tan(1)];
}

問題があります。tanはdoubleを返しますが、%d形式の文字列は整数を想定しています。 '%d'を '%lf'に変更すると、修正されるはずです。ターミナルで「man3printf」と入力すると、Apple(および他の多くのライブラリ)が使用するprintfスタイルのフォーマット文字列に関するより多くの情報が得られます。 'フォーマット文字列は0個以上のディレクティブで構成されています'で始まる部分を探します NS

ロンC

2008年7月18日
シカゴエリア
  • 2009年5月14日
自動変換と浮動小数点の奇妙さについての簡単なメモ...

Guiyon氏:問題があります。tanはdoubleを返しますが、%d形式の文字列は整数を想定しています。 '%d'を '%lf'に変更すると、修正されるはずです。ターミナルで「man3printf」と入力すると、Apple(および他の多くのライブラリ)が使用するprintfスタイルのフォーマット文字列に関するより多くの情報が得られます。 'フォーマット文字列は0個以上のディレクティブで構成されています'で始まる部分を探します

これらの「魔法の」型変換は、コンパイラが必要であると認識していない限り発生しません。わからない場合の1つは、stringWithFormatのようなコードです。-変換が必要かどうかは実際にはわからないため、陽気にdoubleを渡します。浮動小数点型で遊び始めたら、それに注意を払う必要があります。

浮動小数点型に関するもう1つの簡単なメモ。次のようなコードを記述しないでください:コード:double a,b; ... if (a == b) { ... =型と浮動小数点型の問題は、それらが等しくなる可能性が非常に低いことです。次のようなものでも:コード:float a,b,c,prod1,prod2; ... // compute values for a, b, and c prod1 = a*b*c; prod2 = c*b*a; if (prod1 == prod2) { ...ホワイトボードでは、これらの番号は同じです。コンピューターの内部では、そうである必要はありません。変ですが、慣れる必要があります。 NS

MrPenguin9

オリジナルポスター
2008年8月1日
  • 2009年5月15日
出来た。

助けてくれてありがとう!