Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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中从十进制转换为双精度时出错#_C#_Calculator - Fatal编程技术网

C# 在C中从十进制转换为双精度时出错#

C# 在C中从十进制转换为双精度时出错#,c#,calculator,C#,Calculator,我犯了一个错误,我不知道为什么。我不觉得有必要改成双倍,还是我应该改成双倍?我现在真的很困惑 参数1:无法从“十进制”转换为“双精度” static void Main(string[] args) { Console.Write("speed: "); string speed = Console.ReadLine(); Console.Write("Gammafaktor: "); string Gammaf

我犯了一个错误,我不知道为什么。我不觉得有必要改成双倍,还是我应该改成双倍?我现在真的很困惑

参数1:无法从“十进制”转换为“双精度”

    static void Main(string[] args)
    {


        Console.Write("speed: ");
        string speed = Console.ReadLine();
        Console.Write("Gammafaktor: ");
        string Gammafaktor = Console.ReadLine();


        {
        }
        var gamma1 = Convert.ToDecimal(Gammafaktor);
        var speed1 = Convert.ToDecimal(speed);

        if ( speed1 !=0 )
        {

            var calc = 1m / Convert.ToDecimal(Math.Sqrt(1 - speed1 * speed1));
            Console.WriteLine(calc);
        }


    }

}

}您最有可能看到:

CS1503参数1:无法从“十进制”转换为“双精度”

    static void Main(string[] args)
    {


        Console.Write("speed: ");
        string speed = Console.ReadLine();
        Console.Write("Gammafaktor: ");
        string Gammafaktor = Console.ReadLine();


        {
        }
        var gamma1 = Convert.ToDecimal(Gammafaktor);
        var speed1 = Convert.ToDecimal(speed);

        if ( speed1 !=0 )
        {

            var calc = 1m / Convert.ToDecimal(Math.Sqrt(1 - speed1 * speed1));
            Console.WriteLine(calc);
        }


    }

}
在使用
Math.Sqrt
调用的行上,或者(如果您将作业移到本地):

CS0266无法将类型“decimal”隐式转换为“double”。存在显式转换(是否缺少强制转换?)

Math.Sqrt
接受一个
double
,而不是
decimal
,并且从
decimal
double
的转换是显式的,而不是隐式的-这意味着它不会在您不知道的情况下自动执行;因此:

var calc = 1m / Convert.ToDecimal(Math.Sqrt((double)(1 - speed1 * speed1)));

作为旁注。。。除非
speed1
始终在0和1之间,否则这种计算看起来很奇怪(也很危险)。

供将来参考-连续测量(如速度)使用
double
,离散测量(如货币)使用
decimal