文档章节

[每天一个知识点]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
互联网Scratch编程趣味课:不插电编程和计算机对话[图]

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

原创小博客
07/16
0
0
手把手教你用原生JavaScript造轮子(1)——分页器

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

csdoker
07/26
0
0
埃及对数学的贡献—数学起源(一)

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

fnqtyr45
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6 取余运算

python中取余运算逻辑如下: 如果a 与d 是整数,d 非零,那么余数 r 满足这样的关系: a = qd + r , q 为整数,且0 ≤ |r| < |d|。 经过测试可发现,python3.6中取余运算得到的 r 是正整数;...

colinux
16分钟前
1
0
[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
3
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
3
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
1
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部