C#中的Math.Atan2或类实例问题

时间:2009-12-24 10:39:42

标签: c# .net debugging atan2

这是我的问题(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中显示调试时。 这里出了什么问题?

2 个答案:

答案 0 :(得分:3)

w2实际上必须是-0.0,格式为0

以下博客文章展示了如何实际测试此内容(Decimal.GetBits(value)): http://blogs.msdn.com/bclteam/archive/2006/10/12/decimal-negative-zero-representation-lakshan-fernando.aspx

答案 1 :(得分:2)

请注意,为了三角学的目的,-Math.PI和Math.PI是等效的。将角度进行比较几乎总是一个非常糟糕的想法,好像它们是双打的。请参阅扩展的SO讨论:Averaging angles... Again