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 在三角学中是等价的。将角度作为双倍进行比较几乎总是一个非常糟糕的主意。请参阅扩展的 SO 讨论:平均角度...再次

于 2009-12-24T11:03:52.243 回答