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

时间:2014-06-09 18:06:04

标签: c++ casting rounding

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

1 个答案:

答案 0 :(得分: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;
}