得到错误当从十进制转换为Double在C#

问题描述 投票:1回答:1

我得到了一个错误,我不知道为什么。我不觉得需要转换到两倍或我应该给?我现在是真糊涂

参数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);
        }


    }

}

}

c# calculator
1个回答
2
投票

你最有可能错过:

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

在与Math.Sqrt电话线,或者(如果移动分配了到本地):

CS0266无法隐式转换类型“小数”到“双”。一个显式转换存在(是否缺少强制转换?)

Math.Sqrt需要double,不是decimal,并从decimal转换为double是明确的,不隐 - 这意味着它不会只是做它会自动在你自己知道这件事;所以:

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

作为一个侧面说明...这看起来计算很奇怪(和危险),除非speed1永远是零和一之间。

© www.soinside.com 2019 - 2024. All rights reserved.