c# - 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?
解决方案
好的,
让我们将代码重写为类似的场景:
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
。仔细考虑一下,您可能会弄清楚原因。
推荐阅读
- apache-spark - 在 spark 3.0.0 中无法触发 AQE 的倾斜连接优化
- java - BeanUtilsBeans copyProperties 不复制任何字段
- android - savedInstanceState 在第一次应用程序关闭后为空,但在第二次关闭后不为空
- html - How to apply to @font-face?
- qt - 在使用 LLVM 的 Windows 上的 QtCreator 编译中没有规则来制作目标
- php - 如果记录不存在并从数据库中获取数据,则需要插入 sql
- c++ - string::find_first_of 的实现
- spring-boot - Axon 状态存储聚合测试 IllegalStateException
- jenkins - Jenkins kubernetes-plugin 不理解脚本化管道中的环境变量
- android - Flutter 模拟器错误 | 无法找到具有路径的平台 SDK:平台;android-R