文档章节

[每天一个知识点]24-编程技巧-如何简单计算分页等需要进1的除法

Maxwell1987
 Maxwell1987
发布于 2015/02/05 10:08
字数 490
阅读 97
收藏 0

我们经常遇到这种场景,一个盒子可以装5台肾6,要偷偷带走21台肾6需要多少个盒子?或者一页纸可以记7个妹子的电话号码,要记20个妹子的电话号码需要准备多少张纸?当然,更现实的可能是web页面上一页显示n条记录,x条记录需要分多少页显示。

要精确计算当然是

double pages = (double)x / n;

你就能得到1.5页或者是3.1415929页这种奇怪的数值了,不过你的老板可能会嫉妒你的算术水平,会要求你得到2或者4的结果,这时候怎么办?难道用

int pages = x / n + 1;

这样吗?貌似看起来可能大概还是能正常工作的,好像解决了这个问题……等等,当x能被n整除的时候好像是不该+1的,这可怎么办呢,代码改成这样吧

int pages = (x % n == 0) ? x / n : x / n + 1;

这回代码果然能用了,只是看起来好像有点复杂,还是使用这个简单的方法吧

int pages = (x + n - 1) / n;

道理很简单,利用整数除法去尾的特点,如果x本来不能整除n加上n-1之后就会使结果加1,如果x本来能够整除n那增加的n-1会被去尾结果保持不变。


PS1:开篇的问题,要记20个妹子的电话需要20张纸,否则你会被妹子打死的。

PS2:如果有355条记录,每页显示113条,需要的页数是3.1415929,这个叫密率,祖冲之的计算结果。

PS3:不用考虑倒数第二种写法与最后一种写法的效率问题,人类可读更重要,程序效率差距微乎其微。


© 著作权归作者所有

共有 人打赏支持
Maxwell1987
粉丝 21
博文 41
码字总数 22080
作品 0
济南
程序员
加载中

评论(3)

blu10ph
blu10ph

引用来自“blu10ph”的评论

ceil?~

引用来自“Maxwell1987”的评论

文章这种是跨语言的,当然局限性就是整数。
喵~~
Maxwell1987
Maxwell1987

引用来自“blu10ph”的评论

ceil?~
文章这种是跨语言的,当然局限性就是整数。
blu10ph
blu10ph
ceil?~
css3动画高级应用开发唱吧首页图片飞入效果

知识点: html/css布局思维,定位、浮动详解,css3动画高级应用,过渡属性解析,js应用,企业布局思维运用,开发标准等。 唱吧首页飞入效果源码如下: 小建议: 用好互联网 在你开始学习编程的...

急速奔跑中的蜗牛
2017/10/28
0
0
SSE图像算法优化系列十九:一种局部Gamma校正对比度增强算法及其SSE优化。

  这是一篇2010年比较古老的文章了,是在QQ群里一位群友提到的,无聊下载看了下,其实也没有啥高深的理论,抽空实现了下,虽然不高大上,还是花了点时间和心思优化了代码,既然这样,就顺便...

Imageshop
06/03
0
0
手把手教你用原生JavaScript造轮子(1)——分页器

日常工作中经常会发现有大量业务逻辑是重复的,而用别人的插件也不能完美解决一些定制化的需求,所以我决定把一些常用的组件抽离、封装出来,形成一套自己的插件库。同时,我将用这个教程系列...

csdoker
07/26
0
0
互联网Scratch编程趣味课:不插电编程和计算机对话[图]

互联网Scratch编程趣味课:不插电编程和计算机对话[图]: 过去的一周,冉爸和一家棒球夏令营合作,给一群无拘无束的小帅哥带去了编程趣味课。每天,这些7,8岁的小家伙在棒球场上挥洒汗水之后...

原创小博客
07/16
0
0
埃及对数学的贡献—数学起源(一)

数学是人类文明的重要标志之一,“数学”的概念远远早于文字。说句官话,“数学是劳动人民在生产实践中发明创造的”。下图是考古学者在刚果发现的一截猴骨,上面刻有三列、16组痕迹,距今2万...

fnqtyr45
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java GC机制详解

垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制。 导读: 1、什么是GC 2、GC常用算法 3、垃圾收集器 4、finalize()方法详解 5、总结--根据GC原理来优化代码 ...

小刀爱编程
20分钟前
1
0
ORACEL学习--理解over()函数

二、理解over()函数 1.1、两个order by的执行时机 分析函数是在整个sql查询结束后(sql语句中的order by的执行比较特殊)再进行的操作, 也就是说sql语句中的order by也会影响分析函数的执行结果...

spinachgit
22分钟前
1
0
抽象语法树

import asttree = ast.parse('def hello_word(): print("hello world!")')def hell_word(): print(1)print(ast.dump(tree)) 语法树 可以基于这个实现另外一种编程语言...

colin_86
22分钟前
1
0
Akka查询设备组《fourteen》译

加入以下依赖到项目中: 介绍: 到目前为止,我们看到的会话模式很简单,因为它们要求Actor保持很少或没有状态。 特别: 设备actor返回一个读数,不需要更改状态。 记录温度,更新单个字段。...

woshixin
29分钟前
1
0
wait、notify、notifyAll 的用法

wait()、notify()、notifyAll()是三个定义在Object类里的方法,用来控制线程的状态。这三个方法最终调用的都是jvm的native方法, 随着jvm运行平台的不同可能有些许差异。 wait(): 使持有该对...

noob_fly
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部