符号

  1. 向下取整符号:⌊x⌋⌊x⌋⌊x⌋,表示小于等于 xxx 的最大的整数。常用于分数,比如分数的向下取整 ⌊xy⌋⌊\cfrac {x} {y}⌋⌊yx​⌋。
  2. 向上取整符号:⌈x⌉⌈x⌉⌈x⌉,与向下取整符号相对,表示大于等于 xxx 的最小的整数。

向上取整

先放结论:左边式子表示aaa对b+1b+1b+1向上取整,右边是取整的算法

ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a​) = a+bb+1\cfrac {a+b} {b+1}b+1a+b​

  • 当aaa是b+1b+1b+1的整数倍数,a=k∗(b+1)a=k*(b+1)a=k∗(b+1),可以得到左边=右边

    • 左边ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a​) = ceil(k∗(b+1)b+1)ceil(\cfrac {k*(b+1)} { b+1})ceil(b+1k∗(b+1)​) = ceil(k)ceil(k)ceil(k) = kkk
    • 右边a+bb+1\cfrac {a+b} {b+1}b+1a+b​ = k∗(b+1)+bb+1\cfrac {k*(b+1)+b} {b+1}b+1k∗(b+1)+b​ = k+bb+1k+ \cfrac {b} {b+1}k+b+1b​ = k+0k+0k+0 = kkk
  • 当aaa除以b+1b+1b+1还有余数,设余数为ccc, 即 a=k∗(b+1)+ca=k*(b+1)+ca=k∗(b+1)+c ,因为这里的ccc是余数,其范围是$ \sum_{1}^{(b+1)} c $
    • 左边ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a​) = ceil(k∗(b+1)+cb+1)ceil(\cfrac {k*(b+1)+c} {b+1})ceil(b+1k∗(b+1)+c​) =ceil(k+cb+1)ceil(k+\cfrac {c} {b+1})ceil(k+b+1c​) =ceil(k+cb+1)ceil(k+\cfrac {c} {b+1})ceil(k+b+1c​) = k+1k+1k+1

      • 因为这里的ceil(cb+1)ceil(\cfrac {c} {b+1})ceil(b+1c​) 其中ccc比b+1b+1b+1小,向上取整的结果是1

上面两种情况下,都是左边=右边

还有一种等价的形式:

ceil(ab)ceil(\cfrac {a} {b})ceil(ba​) = a+b−1b\cfrac {a+b-1} {b}ba+b−1​ 即⌈ab⌉⌈\cfrac {a} {b}⌉⌈ba​⌉ = a+b−1b\cfrac {a+b-1} {b}ba+b−1​

范围

x−1<⌊x⌋≤x≤⌈x⌉<x+1x−1<⌊x⌋≤x≤⌈x⌉<x+1x−1<⌊x⌋≤x≤⌈x⌉<x+1

⌈ab⌉≤a+b−1b⌈\cfrac {a} {b}⌉≤\cfrac {a+b-1} {b}⌈ba​⌉≤ba+b−1​

⌊ab⌋⌊\cfrac {a} {b}⌋⌊ba​⌋≥a−(b−1)b\cfrac {a-(b-1)} {b}ba−(b−1)​

实现

  • 四舍五入:int(a+1.0b+0.5)int(\cfrac {a+1.0} {b}+0.5)int(ba+1.0​+0.5)

应用

1904.你完成的完整对局数
class Solution {public int numberOfRounds(String startTime, String finishTime) {int s = transform(startTime), e = transform(finishTime);if (s > e) e += 24 * 60;//如果过了凌晨了,需要将e加1天的时间s = (s + 14) / 15;//上取整公式e /= 15;//下取整return s > e ? 0 : e - s;}private int transform(String s) {//转换当前的时间为分钟计String[] arr = s.split(":");int h = Integer.parseInt(arr[0]), m = Integer.parseInt(arr[1]);return h * 60 + m;}
}

向上取整向下取整探讨相关推荐

  1. 【python】向上取整 向下取整

    python向上取整 向下取整 向上取整 ceil() 函数返回数字的向上取整整数,就是返回大于等于变量的最近的整数. ceil()是不能直接访问的,需要导入 math 模块. import math ...

  2. python取整方式(向上取整/向下取整/四舍五入)

    1.向下取整 向下取整直接用内建的 int() 函数即可: >>> a = 3.75 >>> int(a) 3 2.四舍五入 对数字进行四舍五入用 round() ...

  3. c# 整数除法取整_c# 三种取整方法 向上取整 向下取整 四舍五入

    c# 三种取整方法 向上取整 向下取整 四舍五入 Math.Round:四舍六入五取整 Math.Ceiling:向上取整,只要有小数都加1 Math.Floor:向下取整,总是舍去小数 public ...

  4. c# 四舍五入、上取整、下取整

    在处理一些数据时,我们希望能用"四舍五入"法实现,但是C#采用的是"四舍六入五成双"的方法,如下面的例子,就是用"四舍六入五成双"得到的结果 ...

  5. python如何对人数向上取整_python中的向上取整向下取整以及四舍五入的方法

    import math #向上取整 print "math.ceil---" print "math.ceil(2.3) => ", math.ceil( ...

  6. python向上取整 向下取整

    2019独角兽企业重金招聘Python工程师标准>>> 环境python 3.6 向上取整 ceil() 函数返回数字的向上取整整数,就是返回大于等于变量的最近的整数. ceil() ...

  7. python计算结果向上取整_python中的向上取整向下取整以及四舍五入的方法

    import math #向上取整 print "math.ceil---" print "math.ceil(2.3) => ", math.ceil( ...

  8. 【向上取整/向下取整】C语言向上或向下取整 函数[内容与错误,请看评论]

    C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2.C/C++中的整数除法运算符"/&qu ...

  9. Python向上取整 向下取整的方法

    1.python向下取整 方法: 一般使用floor除法,一般除法/,round()四舍五入函数 2.python向上取整 方法: Python match.ceil函数 ceil(x)函数是向上取整 ...

最新文章

  1. es-04-mapping和setting的建立
  2. 推荐20个很有帮助的 Web 前端开发教程
  3. pct_change()
  4. 修改Maven源为阿里巴巴的镜像
  5. 【机器学习】传统目标检测算法之级联分类器Cascade
  6. 如何使用TCP套接字的端口来区分是哪个客户端发起的连接
  7. 这样准备,面试成功率提升30%
  8. 学习SQL:INNER JOIN与LEFT JOIN
  9. 8个流行的Python可视化工具包。
  10. 4G模块使用记录移远EC20、BC20
  11. PHP开发的AZ自动发卡网站系统源码
  12. UWA学堂|逻辑代码模块
  13. 2022年下半年(软考高级)信息系统项目管理师报名条件
  14. 百度地图自定义信息窗口
  15. 【小米】风口的猪-中国牛市
  16. 乐优商城之后台管理系统
  17. 8cm等于多少像素_1寸照片尺寸是多少,对应的像素是多少
  18. shrio简介--w3cschool
  19. 像素鸟 app 的设计与实现
  20. html5 游戏广告 sdk,帷千动媒SDK 3.0发布 基于HTML5富媒体广告

热门文章

  1. 毕业设计 - 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类
  2. 好嗨呦是谁_抖音好嗨哟感觉人生已经到达了高潮出自哪里?谁唱的?
  3. 关于PDF文件无法打印的问题的解决办法
  4. eplan 电箱布局_EPLAN电气图实例--控制柜(1)
  5. 简述DDNS和DNS区别
  6. 在vue项目中使用html2canvas实现保存网页为图片
  7. 软件工程毕业论文mysql英文翻译,软件工程专业毕业设计外文文献翻译.doc
  8. mtk flash配置
  9. C语言排列组合(函数
  10. 微信小程序访问豆瓣电影API 403 400