C:(int)x和floor(x)之间的差异?

igu*_*222 19 c floating-point

在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.)


Jon*_*rdy 5

floor(n)返回数学平台n,即不大于的最大整数n.(int)n返回绝对值不大于n的整数的截断.同样,返回数学上限,或不小于的最小整数.正如AraK指出的那样,返回的数字或者可能不符合范围.nceil(n)nnfloor()ceil()int