이상한 버그를 해결할 때 도움이 필요합니다. x86에서 mod (%) 연산자를 사용하면 좋음, x64에서는 때때로 NaN이 나머지로 나타납니다 (일반적으로 Angle = 0). 나는 그 코드를 내 코드 외부에서 재현 할 수 있었지만 Angle = double 만 사용했다. 엡실론 (내 코드에서는 Angle = 0에서도 발생).x86 대 x64의 Mod (%) 연산자
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);
}
}
감사합니다, 셰이
버그가 확실하지 않습니다. x86 및 x64 부동 소수점은 다른 결과를 반환 할 수 있습니다. 그 문제를 해결하기 만하면됩니다. –
작은 팁 : 자신의 상수로 지정하는 대신'Math.PI'를 사용할 수 있습니다 –