Necesito ayuda para resolver un error extraño - cuando uso el operador mod (%) en x86 todo bien, Pero en x64 me sale a veces NaN como residuo (por lo general ocurre con Angle = 0). Logré reproducir ese error fuera de mi código, pero solo con Angle = double.Epsilon (en mi código también ocurre con Angle = 0).Operador Mod (%) en x86 vs x64
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);
}
}
Saludos, Shay
No estoy tan seguro de que sea un error: los puntos flotantes x86 y x64 pueden arrojar resultados diferentes. Tal vez solo necesites trabajar en eso. –
Consejo pequeño: puede usar 'Math.PI' en lugar de especificarlo como su propia constante –