c# - 为什么 var 被解析为 Double 而不是 Long?

标签 c# double int64

在下面的代码中,我希望 var 被解析为 Int64,但它被解析为 double。为什么会这样?

string a =  "1234";
bool asInt = true;
var b = (asInt) ? Int64.Parse(a) : Double.Parse(a) ;
Console.WriteLine(b.GetType());

最佳答案

存在从 Int64Double 的隐式转换,但不是另一种方式(由于该方向可能会丢失精度)。

由于条件的两个“分支”需要解析为同一类型,b 的类型最终被推断为 Double

关于c# - 为什么 var 被解析为 Double 而不是 Long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276876/

相关文章:

java - 返回数据不带两位小数 :Rounding Doubles

lua - 大 lua 数字打印不正确

c# - 莫名其妙的线程行为

javascript - ASP.Net:跨浏览器操作

Java 比较数组值并找到最接近的

Java double 不会否定!为什么?

C++:如何检查枚举只有唯一值

在 Windows 中将 __int64 转换为 long

c# - 为什么 VB 允许声明静态类型的对象?

c# - 如何告诉 NSwag C# 客户端生成器使用我们的 DTO 而不是生成新的 DTO?