Скорее всего, вы видите:
CS1503 Аргумент 1: невозможно преобразовать из «десятичного» в «двойное»
в строке с вызовом Math.Sqrt
или (если вы перемещаете назначение в локальное пространство):
CS0266 Невозможно неявно преобразовать тип 'decimal' в 'double'.Существует явное преобразование (вам не хватает приведения?)
Math.Sqrt
занимает double
, а не decimal
, а преобразование из decimal
в double
равно явный , а не неявный - это означает, что он не будет делать это автоматически без вашего ведома;Итак:
var calc = 1m / Convert.ToDecimal(Math.Sqrt((double)(1 - speed1 * speed1)));
В качестве примечания ... этот расчет выглядит очень странным (и опасным), если speed1
не всегда находится между нулем и единицей.