У меня эта функция написана на C# для вычисления sin (x). Но когда я пытаюсь с x = 3.14, напечатанным результатом sin X является NaN (не число), , но при отладке его очень близко к 0,001592653 Значение не слишком велико, ни слишком мало. Итак, как может NaN появиться здесь?Почему эта функция sin (x) в C# возвращает NaN вместо числа
static double pow(double x, int mu)
{
if (mu == 0)
return 1;
if (mu == 1)
return x;
return x * pow(x, mu - 1);
}
static double fact(int n)
{
if (n == 1 || n == 0)
return 1;
return n * fact(n - 1);
}
static double sin(double x)
{
var s = x;
for (int i = 1; i < 1000; i++)
{
s += pow(-1, i) * pow(x, 2 * i + 1)/fact(2 * i + 1);
}
return s;
}
public static void Main(String[] param)
{
try
{
while (true)
{
Console.WriteLine("Enter x value: ");
double x = double.Parse(Console.ReadLine());
var sinX = sin(x);
Console.WriteLine("Sin of {0} is {1}: " , x , sinX);
Console.ReadLine();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Какое значение является X? Я использовал значение 1, и оно получилось как 0.8414709848078965 - объясните шаги, чтобы воспроизвести проблему. –
Я использую x = 3.14, это делает ошибку happend – Andiana