小编Sha*_*hay的帖子

x86与x64上的Mod(%)运算符

我需要帮助来解决一个奇怪的错误 - 当我在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#

7
推荐指数
1
解决办法
849
查看次数

标签 统计

c# ×1