繁体   English   中英

在C#中从十进制转换为Double时出错

[英]Getting Error When Converting from Decimal to Double in C#

我有一个错误,我不知道为什么。 我不认为需要转换为两倍,还是我应该这么做? 我现在真的很困惑

参数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:无法从“十进制”转换为“双精度”

在调用Math.Sqrt的行上,或者(如果将分配移到本地):

CS0266无法将类型“十进制”隐式转换为“双精度”。 存在显式转换(您是否缺少演员表?)

Math.Sqrt接受double而不是decimal ,并且从decimaldouble的转换是显式的 ,而不是隐式的 -这意味着它不会在不知情的情况下自动执行。 所以:

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

附带说明一下...除非speed1始终在零和一之间,否则该计算看起来非常奇怪(危险)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM