Ho bisogno di aiuto per risolvere uno strano bug - quando uso l'operatore mod (%) su x86 tutto bene, Ma su x64 ottengo a volte NaN come resto (di solito accade con Angolo = 0). Sono riuscito a riprodurre questo bug fuori dal mio codice, ma solo con Angle = double.Epsilon (al mio codice succede anche con Angle = 0).Mod (%) operatore su 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);
}
}
saluti, Shay
Non sono sicuro che si tratti di un errore - il virgola mobile x86 e x64 può restituire risultati diversi. Potresti aver bisogno di ovviare a questo. –
Piccolo consiglio: è possibile utilizzare 'Math.PI' invece di specificarlo come costante propria –