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

时间:2011-07-23 06:28:13

标签: c# casting floating-point comparison int

 if(float > int)

真的只是

 if(float > (float)int)

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

只是一个简单的问题

2 个答案:

答案 0 :(得分:6)

是!

他们是一回事。

直接将浮点数与整数进行比较的无指令,因此它首先将整数转换为float


然而:

小心:意味着int - - - float转换无损。它仍然会丢失一些信息,所以这段代码:

(int)(float)integer == integer

并不总是评估为true! (尝试使用int.MaxValue查看。与double / long同上。)

答案 1 :(得分:3)

是。没有>(float, int)运算符 - 只是>(int,int)和>(float, float)。因此编译器通过将第二个操作数转换为float来调用后一个运算符。有关详细信息,请参阅C#规范的第7.3.6.2节:

  

对于预定义的+, - ,*,/%,&,|,^,==,!=,>,<,> =和< =二元运算符的操作数进行二进制数字提升。二进制数字提升隐式地将两个操作数转换为公共类型,在非关系运算符的情况下,它也成为操作的结果类型。

(然后列出所涉及的步骤。)

您确定intfloat转换需要花费很多时间吗?它应该很便宜。