簡體   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