投射到 int vs floor

2022-01-09 00:00:00 floating-point c c++

这些有什么区别吗:

float foo1 = (int)(bar / 3.0);
float foo2 = floor(bar / 3.0);

据我了解,这两种情况的结果相同.编译出来的代码有区别吗?

As I understand both cases have the same result. Is there any difference in the compiled code?

推荐答案

转换为 int 将截断为零.floor() 将向负无限截断.如果 bar 为负数,这将为您提供不同的值.

Casting to an int will truncate toward zero. floor() will truncate toward negative infinite. This will give you different values if bar were negative.

相关文章