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

Ani*_*ack 5 c double casting math.h

我有下面的例子:

double x = 2.5;
int n = (int)x;
int k = (int) floor(x);
Run Code Online (Sandbox Code Playgroud)

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

use*_*674 14

小心负数.转换将截断为0. floor将截断为负无穷大.

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


Dmi*_*nko 7

(int)截断初始double值(删除小数部分)

  2.1  -> 2
  2.5  -> 2
  2.99 -> 2
Run Code Online (Sandbox Code Playgroud)

它看起来像floor,但在负数的情况下它们不一样:

  (int)-2.1   -> -2
  floor(-2.1) -> -3.0
Run Code Online (Sandbox Code Playgroud)

因为floor返回的最大整数值小于或等于给定的参数