Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应该很简单,但不知何故它';不是_C# - Fatal编程技术网

C# 应该很简单,但不知何故它';不是

C# 应该很简单,但不知何故它';不是,c#,C#,这是问题的一种特殊情况当numen/domin=1时,问题应该产生0吗 domin输出显示为6,但结果显示为NaN 当numen=4,domin=sqrt为4的2次方时,结果为4/4,所有正整数(如9,16,25,36)的正确答案相同 但如果我放6,它会给NaN 如果我放7,它显示1.490116E-08 如果我放8,它显示2.107342E-08 我知道你能说什么 如果(努曼==多明) 结果=0 但我真的很想知道为什么这不能正常工作 using System; using System.Col

这是问题的一种特殊情况当numen/domin=1时,问题应该产生0吗 domin输出显示为6,但结果显示为NaN

当numen=4,domin=sqrt为4的2次方时,结果为4/4,所有正整数(如9,16,25,36)的正确答案相同 但如果我放6,它会给NaN

如果我放7,它显示1.490116E-08

如果我放8,它显示2.107342E-08

我知道你能说什么

如果(努曼==多明) 结果=0

但我真的很想知道为什么这不能正常工作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ps
{
    class Program
    {
         static void Main(string[] args)
        {
           double numen = 6;
           double domin = Math.Pow(Math.Sqrt(6), 2);
           Console.WriteLine(domin);
           double result = Math.Acos(numen /(domin));
           Console.WriteLine(result);
        }
    }
}

这里是基础数学

sinus
cosinus
数学值的值在-1和1之间变化,因此逆函数的域,例如
arcus sinus
arcus cosinus
-1
1
之间


在您的示例中,
numen/domin
由于
Math
lib中的舍入错误而变成
1.0000000000000002
。因此,当您调用
Math.Acos
时,它是
arcus cosinus
domin
在函数域之外,因此返回的值是
NaN

Read
Sqrt(6)
不是整数。因此,
Math.Pow(Math.Sqrt(6,2))
将给出近似值,而不是
1
(在这种情况下,
5.999999999999
)。然后,
6/5。999999999999
将略高于1。使用
decimal
代替感谢您的帮助!!我理解为什么它不起作用“1.0000000000000002由于数学库中的舍入错误”我知道arcos的范围只是不知道数学库有舍入错误没有期望它是诚实的我的问题不在附近当它是NaN时它在附近为什么它是NaN@user13674310所以,原因是舍入误差,这导致值超出了余弦弧的域,而余弦弧又导致了
NaN
值。如果我的答案对你有帮助,你应该接受它(左边绿色复选标记)。