[英]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
,並且從decimal
到double
的轉換是顯式的 ,而不是隱式的 -這意味着它不會在不知情的情況下自動執行。 所以:
var calc = 1m / Convert.ToDecimal(Math.Sqrt((double)(1 - speed1 * speed1)));
附帶說明一下...除非speed1
始終在零和一之間,否則該計算看起來非常奇怪(危險)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.