Получение ошибки при преобразовании из десятичного в двойное в C # - PullRequest
0 голосов
/ 05 февраля 2019

Я получил ошибку и не знаю почему.Я не вижу необходимости конвертировать в удвоение или я должен это сделать?Я сейчас в замешательстве

Аргумент 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);
        }


    }

}

}

1 Ответ

0 голосов
/ 05 февраля 2019

Скорее всего, вы видите:

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 не всегда находится между нулем и единицей.

...