Выполнение параметров метода Double & Float при вызове в C # - PullRequest
1 голос
/ 13 октября 2009

Вот небольшой фрагмент кода, при вызове которого выводится 'double'. Зачем? В чем причина этого. Почему не печатается 'float'?

class source
{

    static void Main()
    {
        Receiver r = new Receiver();


        r.Method1(1.1);
    }

}

class Receiver
{
    public virtual void Method1(double f) { Debug.Print("double"); }
    public virtual void Method1(float f) { Debug.Print("float"); }
}

ТИА

Ответы [ 2 ]

13 голосов
/ 13 октября 2009

Чтобы указать плавающий вызов, как это:

r.Method1(1.1f);

В противном случае он по умолчанию удвоится, как вы заметили.

Вот часть документации MSDN на двойном листе, которая объясняет, почему:

По умолчанию реальный числовой литерал на правая часть задания Оператор рассматривается как двойной.

5 голосов
/ 13 октября 2009

double - тип по умолчанию для нецелых чисел. Так что 1.1 - это двойное число, 1.1m - десятичное число, а 1.1F - число с плавающей запятой.

...