DIV_ROUND_UP(x,y)实现x/y向上取整

#define DIV_ROUND_UP(x,y) (((x) + ((y) - 1)) / (y))

1、问题

  x、y都是整数,且x > 1, y > 1,求 x / y的向上取整,即:

  当 x / y整除时,向上取整值为 x / y;

  当x / y不整除时,向上取整值为(x / y) + 1;

  这个算法的一个应用:有一个动态增长的缓冲区,增长的步长为y,某一次申请的缓冲区大小为x,此时,可以用这个算法,计算出缓冲区的一个合适大小,正好能够容纳x,并且不会过于太多,多余部分不会比y多。

2、证明

  http://www.360doc.com/content/13/0707/10/12892305_298199075.shtml

  http://blog.chinaunix.net/uid-20608849-id-3027956.html

时间: 2024-11-08 09:59:44

DIV_ROUND_UP(x,y)实现x/y向上取整的相关文章

取整,向上取整,向下取整

取整 符号:[ ]  范围   [x]  =  {y ∈ N | y < = x && y > x - 1} 向下取整 符号:?? (floor)floor为地板 横线就在下面   范围 同取整 向上取整 符号:?? (ceiling) ceiling为天花板 横线就在上面 范围 ?x? = {y ∈ N | y > = x && y < x+1} 百度半天都难找到符号 自制百科 随时查阅

js只保留整数,向上取整,四舍五入,向下取整等函数

1.丢弃小数部分,保留整数部分parseInt(5/2)2.向上取整,有小数就整数部分加1Math.ceil(5/2)3,四舍五入.Math.round(5/2) 1.丢弃小数部分,保留整数部分parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.floor(5/2) Math 对象的方法 方法 描述 abs(x) 返回数的绝对值 acos(x) 返回数的反余弦值 asin(x) 返回

Python 向上取整的算法

一.初衷: 有时候我们分页展示数据的时候,需要计算页数.一般都是向上取整,例如counts=205 pageCouts=20 ,pages= 11 页. 一般的除法只是取整数部分,达不到要求. 二.方法: 1.通用除法: UP(A/B) = int((A+B-1)/B) 取临界值,计算下A+B-1的范围就OK. 2 .Python除法: 首先要说的是python中的除法运算,在python 2.5版本中存在两种除法运算,即所谓的true除法和floor除法. 当使用x/y形式进行除法运算时,如果

SQL 向上取整、向下取整、四舍五入取整的实例!round、rounddown、roundup

sql server ==================================================== [四舍五入取整截取] select round(54.56,0) ==================================================== [向下取整截取] SELECT FLOOR(54.56) ==================================================== [向上取整截取] SELECT CE

向上取整

(a+(b-1))/b 34 / 11 + (34 % 11 != 0 ? 1 : 0) CUDA计算中,可以采用这两种方式来表示向上取整.

python 向上取整ceil 向下取整floor 四舍五入round

#encoding:utf-8import math #向上取整print "math.ceil---"print "math.ceil(2.3) => ", math.ceil(2.3)print "math.ceil(2.6) => ", math.ceil(2.6) #向下取整print "\nmath.floor---"print "math.floor(2.3) => ", ma

【向上取整/向下取整】C语言向上或向下取整 函数

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的最小整数.如: c

关于erlang的向上取整和向下取整

在erlang的API中,erlang:trunc/1 是就近取整,erlang:round/1是四舍五入的, 整理下:对于正数的向上和向下取整, 1 %% 向上取整 2 ceil(N) -> 3 T = trunc(N), 4 case N == T of 5 true -> T; 6 false -> 1 + T 7 end. 1 %% 向下取整 2 floor(X) -> 3 T = trunc(X), 4 case (X < T) of 5 true -> T

史上最简洁的向上取整(机房重构知识点总结)

在机房收费系统的基本数据设定中,有一个单位递增时间,这就需要我们满足如下需求: 假如递增单位时间是5,那么需要实现如下的效果: 5-->5 6-->10 7-->10 11-->15 我们一步一步来,先看一个简单的例子: 2.0-->2 2.1-->3 2.4-->3 2.6-->3 我开始用的取整,然后加1,结果带有小数的可以达到目的,但这会让2.0变为3,怎么办呢?abs(int(-x)),先转换为负数,取整后再变为正数即可.因为int(),会让一个浮点