如何将带小数点的数字截断为int? 这是什么function?

当我进行除法运算时会出现问题。 我想知道谁将一个带小数点的数字截断为整数,如2,4,67。

它自动截断是你为“int”变量赋值:

int c; c = a/b; 

或者你可以像这样投射:

 c = (int) (a/b); 

即使c被定义为float或double,这也会截断它。

通常截断不是最好的(取决于你想要实现的目标)。 通常结果是这样舍入:

 c= round(a/b,0); 

更聪明,因为圆形结果正常。 如果你使用linux,你可以很容易地获得关于确切数据类型的“man round”的引用。

您可以使用math.h定义的trunc()函数。 它将删除小数部分并返回不大于给定数字的最近整数。

这是如何定义的:

 double trunc(double x); 

以下是如何使用它:

 double a = 18.67; double b = 3.8; int c = trunc(a/b); 

您可以在Linux上检查man trunc以获取有关此function的更多详细信息。 正如在前面的答案中所指出的,你可以将除法结果转换为整数,如果分配给整数,它会自动被截断但如果你有兴趣了解一个C函数来完成这个工作,那么trunc()就是那个。

 int result = (int)ceilf(myFloat ); int result = (int)roundf(myFloat ); int result = (int)floor(myFloat); float result = ceilf(myFloat ); float result = roundf(myFloat ); float result = floor(myFloat); 

我认为这对你有所帮助。

从浮点类型手动或隐式转换为整数类型会导致自动截断为零。 请记住,如果积分类型不足以存储该值,则会发生溢出。 如果您只需要在截断小数点后的所有内容打印该值,请使用printf()

 printf("%.0f", floor(float_val)); 

正如TõnuSamuel指出的那样, printf()调用实际上会默认舍入浮点参数。