在C++中,(long long)x与(long long)floor(x)相同吗?

Adi*_*una 4 c++ casting rounding

假设我有一个双数据类型,变量名为'x'.是否有必要将double转换为long long数据类型给出与转换为long long floor(x)相同的结果.

Ben*_*igt 6

不,这不一样.

转换截断(向零舍入),floor函数向下舍入.

演示:http://ideone.com/k8JuA9

#include <iostream>
#include <math.h>

int main()
{
    double x = -1.4;
    std::cout << "(long long)x        = " << ((long long)x) << "\n";
    std::cout << "(long long)floor(x) = " << ((long long)floor(x)) << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)