我想在C#
的控制台应用上获得一个简单的结果Console.Write("Enter a number: ");
double x = Convert.ToDouble(Console.ReadLine());
x=(7*x/4+1/2) - (5*x/4+1/2)*Math.Acos(Math.PI*x);
Console.WriteLine(x);
这导致了NaN,我无法弄清楚为什么。我不是很精通编程,所以我确信它显而易见。谢谢!
答案 0 :(得分:3)
首先将其拆分。一旦你得到一个NaN,那之后的所有数学都是NaN!
您必须使用isNaN
检查NaN,因为x == NaN
始终为假!
答案 1 :(得分:1)
您正在使用Math.Acos
,它只能在-1和+1之间输入。当你输入Pi时,它会返回NaN,然后会破坏整个公式。您可能只想要Math.Cos
修改强>
在得到错误答案时,它可能是1/2
上的整数除法。在对整数进行分割时,答案会被截断,因此1/2
会产生0
,而不会产生预期的0.5
,从而为您提供1个答案。使用1.0/2.0
< / p>
答案 2 :(得分:1)
作为良好做法,您还应检查用户输入的文本实际上是否为数字。您可以使用double.TryParse
,如果无法将文本解析为数字,则返回false。您当前的代码将抛出异常
答案 3 :(得分:0)
Arccos pi =“余弦为pi的角度”。余弦只在-1到+1范围内。