0

ここに私の問題があります(C#):

double Y = 0.0;
double X = -21.0;

double q1_Test = Math.Atan2(0.0, -21.0);               // gives Math.Pi
double q1_Test2  = Math.Atan2(( double)Y, (double)X);  // gives Math.Pi

double w1 = <SomeclassInstanceGlobalHere>.getW1();  // This is a class which updates a variable
double w2 = <SomeclassInstanceGlobalHere>.getW2();  // This is a class which updates a variable

double q1  = Math.Atan2(w2, w1);              // ** gives -Math.Pi ** ???
//w2 shows 0.0 and w1 shows -21.0

他のクラスから値を取得すると、変数の値はそれぞれ 0.0 と -21.0 になります。デバッグ中に IDE にも表示されます。ここで何がうまくいかないのですか?

4

2 に答える 2

3

w2 は実際には -0.0 でなければならず、0 としてフォーマットされます

次のブログ投稿は、これを実際にテストする方法を示しています (Decimal.GetBits(value)): http://blogs.msdn.com/bclteam/archive/2006/10/12/decimal-negative-zero-representation-lakshan -fernando.aspx

于 2009-12-24T10:44:46.857 に答える
2

-Math.PI と Math.PI は、三角法の目的では同等であることに注意してください。角度を 2 倍であるかのように比較することは、ほとんどの場合、非常にまずい考えです。拡張された SO の議論を参照してください:角度の平均化... もう一度

于 2009-12-24T11:03:52.243 に答える