0

同じでなければならない2つの値の間にこの不一致があります...

#define degreesToRadian(x) (M_PI * x / 180.0f)

... 
CGFloat angle = -3.0f;
CGFloat beta = degreesToRadian(90.0f - fabsf(angle));

CGFloat delta = (90.0f - fabsf(angle)) * M_PI /180.0f;

この時点で、ベータ = 282.72 とデルタ = 1.51 を取得しますか?

両方の値が同じでなければなりません!

何故ですか?

4

1 に答える 1

1

あなたのマクロは壊れています - 変更してください:

#define degreesToRadian(x) (M_PI * x / 180.0f)

に:

#define degreesToRadian(x) (M_PI * (x) / 180.0f)

NB : これは、この種の処理にプリプロセッサを使用してはならない理由のもう 1 つの例です。C と Objective C には 20 年前からインライン関数がありました。それらを使用する必要があります。

于 2012-10-16T23:27:34.817 に答える