c语言向上取整函数怎么用_c语言下取整「建议收藏」

c语言向上取整函数怎么用_c语言下取整「建议收藏」C语言有以下几种取整方法:1、直接赋值给整数变量。如:inti=2.5;或i=(int)2.5;这种方法采用的是舍去小数部分2、C/C++中的整数除法运算符“/”本身就有取整功能(int/int),但是整数除法对负数的取…

大家好,欢迎来到IT知识分享网。

C语言有以下几种取整方法:
1、直接赋值给整数变量。如:
int i = 2.5; 或 i = (int) 2.5;
这种方法采用的是舍去小数部分

2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果和使用的C编译器有关。
3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:
floor(2.5) = 2
floor(-2.5) = -3
4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:
ceil(2.5) = 3
ceil(-2.5) = -2
floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。

5、round(x)返回x的四舍五入整数值。

但是在C里面round、ceil和floor()函数是返回double型,

 

先在网上发现一个简单的向上取整方法;

这里我们用<>表示向上取整,[]表示向下取整,那么怎么来表示这个值呢?

我们可以证明:

=[(N-1)/M]+1    (0

 

不失一般性,我们设N=Mk+r(0<=r

1)当r>0时,

左边:=<(Mk+r)/M>==k+=k+1

右边:[(N-1)/M]+1=[(Mk+r-1)/M]+1=[k+(r-1)/M]+1=k+1+[(r-1)/M]=k+1

2)当r=0

左边:=k

右边:[(N-1)/M]+1=[(Mk-1)/M]+1=[(M(k-1)+M-1)/M]+1=[k-1+(M-1)/M]+1=k+[(M-1)/M]=k

命题得证。

有了这个公式,我们在代码里可以这样计算:

int nn=(N-1)/M +1

.

因为’/’是往下取整的。

用法:

 

?
1
2
3
4
5
6
7
#include
 
double
ceil
(
double
x);
 
double
floor
(
double
x);
 
double
round(
double
x);

ceil(x)返回不小于x的最小整数值(然后转换为double型)。

floor(x)返回不大于x的最大整数值。

round(x)返回x的四舍五入整数值。

给个例子test.c:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include
 
#include
 
int
main(
int
argc,
const
char
*argv[])
 
{
 
float
num = 1.4999;
 
printf
(
"ceil(%f) is %f\n"
, num,
ceil
(num));
 
printf
(
"floor(%f) is %f\n"
, num,
floor
(num));
 
printf
(
"round(%f) is %f\n"
, num, round(num));
 
return
0;
 
}

 编译:$cc test.c -lm

执行:$./a.out

ceil(1.499900) is 2.000000

floor(1.499900) is 1.000000

round(1.499900) is 1.000000


 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/28441.html

(0)
上一篇 2023-09-18 17:45
下一篇 2023-09-28 16:33

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信