2012-04-30 8 views
2

これは初めての高度な数学を使ったiOSプロジェクトの構築です。私はしばらく検索しましたが、私の問題を解決するためのものはまだ見つけていません。私はまだiOSにはまだ新しいので、どんな助けでも大歓迎です。iOSのtan()関数でこの問題が発生するのはなぜですか?

テキストフィールドからの入力を受け取り、度(tan()がデフォルトでラジアンになるため)に変換してラベルに表示する、基本的なtan()関数を使用しようとしています。私が電卓にtan 30を入力すると、.577が返ってきます.449が近づいていますが、31を入力すると "2.356"という値が得られます。ここで

は、私のコードの一部です:

-(IBAction)calculate { 
float x = ([textField1.text intValue]); 
float d = (x * 180)/M_PI; 
float y = tan(d); 


label.text = [[NSString alloc] initWithFormat:@"%2.3f", y]; 
} 
+0

まず、Xcodeは単なるIDEであり、フレームワークやプラットフォームではありません。数学関数は、Xcode自体ではなくシステムによって提供され、標準C言語関数です。次に、C 'tan()関数はラジアン単位で取り込まれ、入力値はラジアンから度単位に変換されているようです。あなたはそれを後方に持っていると思います(あなたはπで掛け算し、180.0で分割する必要があります)。 –

答えて

1

使用しているフォーマット文字列(%2.f)のデータに不適切である - 何の小数点以下の桁数が表示されないことを指定します。 %fを使用してみてください。

+0

ええ、私はちょうど私が間違って入力したことを実現。私は2.3に変更しました。私は元の投稿を変更しましたが、私はまだ奇妙な出力を得ています。ありがとうございました –

+0

ラジアンの場合で、小数点を解決しようと間違っています。ブラッドラーソンは答えましたが、コメントにありました。 まず、Xcodeは単なるIDEであり、フレームワークやプラットフォームではありません。数学関数は、Xcode自体ではなくシステムによって提供され、標準C言語関数です。第2に、C tan()関数はラジアンを取り、入力をラジアンから度に変換しているようです。あなたはそれを後方に持っていると思います(あなたはπで掛け算し、180.0で分割する必要があります)。 - Brad Larson Apr 30 at 1:04 –

0

は、あなたの "d" はフロートである。この

-(IBAction)calculate { 
float x = textField1.text.doubleValue; 
float d = (x * 180)/M_PI; 
float y = tan(d); 

label.text = [NSString stringWithFormat:@"%0.3f", y]; 
0

を試してみてください。 tan()の代わりにtanf()を使用してみてください。

+0

フィードバックに感謝していますが、まだ同じ値を返しています。 –

関連する問題