Ich brauche Hilfe für einen seltsamen Fehler zu lösen - wenn ich mod (%) operator auf x86 alle guten, Aber auf x64 bekomme ich manchmal NaN als Rest (es passiert normalerweise mit Angle = 0). Ich habe es geschafft, diesen Fehler außerhalb meines Codes zu reproduzieren, aber nur mit Angle = double.Epsilon (bei meinem Code passiert es auch mit Angle = 0).Mod (%) operator auf 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);
}
}
Grüße, Shay
Nicht so sicher, dass es ein Fehler ist - x86 und x64 Gleitkomma können unterschiedliche Ergebnisse zurückgeben. Sie müssen nur das umgehen. –
Kleiner Tipp: Sie können 'Math.PI' anstelle der Angabe als eigene Konstante verwenden –