我得到了一个错误,我不知道为什么。我不觉得需要转换到两倍或我应该给?我现在是真糊涂
参数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
永远是零和一之间。