在Float中,为什么?

Moh*_*ari 8 c# floating-point types

long b = 99;  
float c = 99.0F;  
//b = c; //Error : Cannot implicitly convert type 'float' to 'long'.
c = b; // Running Successfully.  Why?
Run Code Online (Sandbox Code Playgroud)

为什么数据类型的大小和隐式转换没有问题?我们知道
的大小floatlong不同之处在下面给出...

Console.WriteLine("Long  : " + sizeof(long)); // Output --> Long : 8
Console.WriteLine("Float : " + sizeof(float));// Output --> Float: 4
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 10

浮子的范围(约±3.4E38)是比长的范围(约±9.22e18)放大,即使长期具有较高的精度.


Jav*_*ram 5

有两个原因

1.值的范围(即最大值).

+--------------+-----------------------------+
|  data type   |        Maximum Value        |
+--------------+-----------------------------+
|              |                             |
|   long       |     9223372036854775807     |
|              |                             |
|   float      |     3.402823E+38            |
|              |                             |
+--------------+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

因为,float的最大值大于long,即long包含在float中.

So, float= long  is possible
but, long = float is not possible
Run Code Online (Sandbox Code Playgroud)

2.优势
您无法在没有显式转换的情况下将浮点值直接分配给整数(非浮动)值.

float a=90     //correct
float b=90.0f; //correct
Run Code Online (Sandbox Code Playgroud)

long a=90     //correct
long b=90.0f; //wrong
Run Code Online (Sandbox Code Playgroud)

在这里,同样从上面的例子看,浮点数似乎可以包含长数据,但反之亦然.

编辑: 关于数据类型的大小,请参阅我的问题.值的范围取决于数据类型的大小?