是
if(float > int)
真的只是
if(float > (float)int)
我正在做这样的研究,看起来浮动到int和int到浮动转换需要花费很多。 我有很多浮点数/ int比较。
只是一个简单的问题
答案 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节:
对于预定义的+, - ,*,/%,&,|,^,==,!=,>,<,> =和< =二元运算符的操作数进行二进制数字提升。二进制数字提升隐式地将两个操作数转换为公共类型,在非关系运算符的情况下,它也成为操作的结果类型。
(然后列出所涉及的步骤。)
您确定int
到float
转换需要花费很多时间吗?它应该很便宜。