首先,对不起我的英语不好。
我有一段代码:

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/

10-17 01:20