将double转换为int会返回舍入数字吗?

时间:2016-02-12 15:54:13

标签: c casting double math.h

我有下面的例子:

double x = 2.5;
int n = (int)x;
int k = (int) floor(x);

将double转换为int会返回舍入数字吗?或者我应该使用地板功能?

3 个答案:

答案 0 :(得分:14)

小心负数。施法将截断为0. floor将截断为负无限。

如果值为正,则两个方法都返回相同的截断值。

答案 1 :(得分:7)

var img = _this.parents('.col-md-4').find('[name="previewImage"]'); 会截断初始(int)值(已删除小数部分)

double

看起来像 2.1 -> 2 2.5 -> 2 2.99 -> 2 ,但在负数的情况下它们不一样:

floor

因为 (int)-2.1 -> -2 floor(-2.1) -> -3.0 返回的最大整数值小于或等于给定的参数

答案 2 :(得分:0)

注意int和double的限制。

int main(void)
{
    double val1 = INT_MAX + 10.5;
    int    val2 = val1;

    printf("val1 = %f\nval2 = %d\n", val1, val2);

    return (0);
}

这产生以下输出:

val1 = 2147483657.500000
val2 = -2147483648

(我不知道INT_MAX是否标准,抱歉)。