在C中,这两者有什么区别?
float myF = 5.6;
printf( "%i \n", (int)myF ); // gives me "5"
printf( "%ld \n", floor(myF) ); // also "5"?
Run Code Online (Sandbox Code Playgroud)
什么时候优于另一个?
Mar*_*off 29
一个很大的区别是负数; 如果更改myF到-5.6,然后转换成一整型的回报-5,而floor(myF)为-6.
至于哪个更可取,作为一个经验法则我会说如果你知道你需要的话只会转换为int - 而且因为你在这里问,你可能想要的机会很多floor.
(另请注意,printf格式化时,%ld是一个长整数;双精度数%lf.)
floor(n)返回数学平台n,即不大于的最大整数n.(int)n返回绝对值不大于n的整数的截断.同样,返回数学上限,或不小于的最小整数.正如AraK指出的那样,返回的数字或者可能不符合范围.nceil(n)nnfloor()ceil()int