[英]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.