MrPenguin9
オリジナルポスター- 2008年8月1日
- 2009年5月13日
ありがとう
SilentPanda
モデレーター名誉
- 2002年10月8日
- 竹林
- 2009年5月13日
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日
ありがとう 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日
#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日
助けてくれてありがとう!
人気の投稿