在C#中调用时,Double&Float方法参数执行

Sof*_*eek 1 c# floating-point parameters double

这是一小段代码,当被称为输出'double'时.为什么?这背后的原因是什么?为什么不打印'浮动'?

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"); }
}
Run Code Online (Sandbox Code Playgroud)

TIA

Jay*_*ggs 13

要像这样指定float调用:

r.Method1(1.1f);
Run Code Online (Sandbox Code Playgroud)

否则它会默认加倍,就像你观察到的那样.

这是关于double 的MSDN文档的一个部分,解释了原因:

默认情况下,赋值运算符右侧的实数数字文字被视为double.


Mik*_*Two 5

double是非整数的默认类型.所以1.1是双精度,1.1m是小数,1.1F是浮点数.