我有下面的例子:
double x = 2.5;
int n = (int)x;
int k = (int) floor(x);
将double转换为int会返回舍入数字吗?或者我应该使用地板功能?
答案 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是否标准,抱歉)。