首页 > 解决方案 > C#中float和double的执行逻辑

问题描述

我在面试中遇到了一个与 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到控制台。为什么它选择 Float 而不是 Double?

标签: c#

解决方案


好的,

让我们将代码重写为类似的场景:

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。仔细考虑一下,您可能会弄清楚原因。


推荐阅读