首先,对不起我的英语不好。
我有一段代码:
long x = 9223372036854775807L;
double f = x;
Console.WriteLine(x);
Console.WriteLine(f);
输出为:
9223372036854775807
9,22337203685478E+18
编译和执行此代码时,我没有任何错误。
将Long转换为Double时,我们会失去精度。
在这种情况下,为什么C#不需要显式转换?
谢谢大家
最佳答案
该语言内置了一些隐式转换。
下表来自documentation,这就是为什么允许您在没有显式强制转换或转换的情况下分配值的原因:
From To
===============================================================================
sbyte short , int, long, float, double, or decimal
byte short , ushort, int, uint, long, ulong, float, double, or decimal
short int , long, float, double, or decimal
ushort int , uint, long, ulong, float, double, or decimal
int long , float, double, or decimal
uint long , ulong, float, double, or decimal
long float , double, or decimal
char ushort , int, uint, long, ulong, float, double, or decimal
float double
ulong float , double, or decimal
并在文档中指出(强调我的意思):
关于c# - 为什么C#不需要显式转换才能将Long转换为Double?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14860416/