if(float> int)是否真的如果(float>(float)int)?

Rya*_*Lee 0 c# floating-point int comparison casting

 if(float > int)
Run Code Online (Sandbox Code Playgroud)

真的只是

 if(float > (float)int)
Run Code Online (Sandbox Code Playgroud)

我正在进行这样的研究,看起来浮动到int和int到浮动转换需要花费很多.我有很多浮点数/ int比较.

只是一个简单的问题

Meh*_*dad 6

是!

他们是一回事.

没有指令到浮点直接比较为整数,所以它首先注塑整数float.


然而:

小心:但这并不意味着int至- float转换为无损.它仍然可以丢失一些信息,所以这段代码:

(int)(float)integer == integer
Run Code Online (Sandbox Code Playgroud)

并不总是评价true!(尝试int.MaxValue看看.与double/ 同上long.)

  • 值得注意的是,虽然`1000000001>(浮动)1000000000` wo ;; 返回false,这是因为后者的数量并不真正代表"1,000,000,000".相反,它代表"999,999,968和1,000,000,032之间的东西"; 前者的数量并不明显大于后者.请注意,1222333443将比较等于1222333444f,但1222333443.0将比较大于1222333444f,因为后者将被强制转换为1222333440.0(浮动和双重转换之间的转换从不太具体到更具体的"扩展" - 与其他类型相反). (4认同)