我需要帮助来解决一个奇怪的错误 - 当我在x86上使用mod(%)运算符时都很好,但是在x64上我有时会得到NaN作为余数(通常在Angle = 0时发生).我设法在我的代码之外重现那个bug,但只有Angle = double.Epsilon(在我的代码中它也发生在Angle = 0).
class Program
{
public const double M_PI = 3.14159265358979323846;
static void Main(string[] args)
{
double m_2PI = (2 * M_PI);
double m_Angle = double.Epsilon;
double mod = (m_Angle % m_2PI);
//x86 mod = 4.94065645841247E-324
//x64 mod = NaN
if (double.IsNaN(mod))
Debug.Write(mod);
}
}
Run Code Online (Sandbox Code Playgroud)
问候,谢伊
c# ×1