请问这个问题应该怎么办(语言-c#)

问题遇到的现象和发生背景

img


输入45以下的数字时,可以运算出结果,输入45及以上的数字时,返回Nan不知道为什么

问题相关代码,请勿粘贴截图

using System;

namespace _3
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入两个角度值:");
string m = Console.ReadLine();
string n = Console.ReadLine();
double p = Convert.ToDouble(m);
double q = Convert.ToDouble(n);
double c1 = p * Math.PI / 180;
double c2 = q * Math.PI / 180;
double a = Math.Sin(Math.Abs(c1) + Math.Abs(c2));
double b = Math.Sqrt(Math.Cos(Math.Abs(c1 + c2)));
Console.WriteLine("结果为:{0}", a/b);
}
}
}

运行结果及报错内容

请输入两个角度值:
20
30
结果为:0.9554769579502546

请输入两个角度值:
45
46
结果为:NaN

我的解答思路和尝试过的方法

将 Math.PI / 180强制转换为int型之后再进行运算

我想要达到的结果

输入任何一个数值,都可以返回对应的结果

double b = Math.Sqrt(Math.Cos(Math.Abs(c1 + c2))) 改一下

因为 cos(91 * Math.PI / 180) 的值为负值 (-0.0174524)

改成 double b = Math.Sqrt(Math.Abs(Math.Cos(c1 + c2)))

或者就加个判断,如果 c1 + c2 的值大于等于90度,就不输出