C#中的float和double的执行逻辑

时间:2018-10-06 09:30:45

标签: c#

我在采访中遇到了一个与C#OOPS概念有关的问题。

public class Program
{

    public static float GetValue(float a)
    {
        Console.WriteLine("Float");
        return a;
    }

    public static double GetValue(double d)
    {
        Console.WriteLine("Double");
        return d;
    }
}

当我执行Program.GetValue(1)时,它将向控制台输出Float。为什么选择“浮动”而不是“双倍”?

1 个答案:

答案 0 :(得分:1)

好吧

让我们将代码重写为类似的情况:

public class Program
{
    public static int GetValue(int i)
    {
        Console.WriteLine("Int");
        return i;
    }

    public static long GetValue(long n)
    {
        Console.WriteLine("Long");
        return n;
    }
} 

现在您期望以下代码输出什么?

byte b = 1;
Program.GetValue(b);

我很确定您期望Int。然后,为什么在代码中打印Float时感到惊讶?它打印Float的原因与我的示例打印Int的原因完全相同。仔细考虑一下,您可能会找出原因。