Разделите 2 целых и получите двойную в C # - PullRequest
0 голосов
/ 22 марта 2019

Я новичок.Обе ситуации ниже дают один и тот же вывод, но являются ли они одинаковыми при компиляции?если нет, то в каком случае использование одного или другого является предпочтительным?

        int num1 = 1001;
        int num2 = 505;
        double num11 = num1;


        double result1 = num11 / num2;
        double result2 = (double)num1 / num2;   //  or (double)num1 / (double)num2;

        Console.WriteLine("result1 = " + result1);
        Console.WriteLine("result2 = " + result2);


        /* Output:
        result1 = 1.98217821782178
        result2 = 1.98217821782178
        */

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

В первой версии вызывается неявное приведение для преобразования num1 в double. Во втором случае вы используете явное приведение, чтобы сделать то же самое. В этом случае оба подхода одинаковы, но неявные и явные приведения не обязательно должны быть одинаковыми.

Я думаю, что явное приведение предпочтительнее просто потому, что яснее читать, что происходит, и не требует инициализации новой переменной.

0 голосов
/ 22 марта 2019

Если любой из аргументов в C # является двойным, используется двойное деление, что приводит к двойному.Для получения дополнительной информации см .: https://www.dotnetperls.com/numeric-casts

...