如何对整数除法的结果进行四舍五入?
我特别在考虑在使用C#或Java等语言时如何显示分页控件。
如果我有 x 个项目,我想在每页以 y 的块显示,则需要多少页?
我特别在考虑在使用C#或Java等语言时如何显示分页控件。
如果我有 x 个项目,我想在每页以 y 的块显示,则需要多少页?
找到一个优雅的解决方案:
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
资料来源:数字转换,罗兰·巴克豪斯,2001年。
在CPU级别转换为浮点并返回似乎是一个巨大的时间浪费。
伊恩·尼尔森的解决方案:
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
可以简化为:
int pageCount = (records - 1) / recordsPerPage + 1;
AFAICS,这没有Brandon DuRette指出的溢出错误,并且因为它只使用它一次,所以如果它来自一个昂贵的函数来从配置文件中获取值或其他东西,你不需要存储recorsPerPage。
也就是说,如果config.fetch_value使用数据库查找或其他方式,这可能是低效的:
int pageCount = (records + config.fetch_value('records per page') - 1) / config.fetch_value('records per page');
这会创建一个您并不真正需要的变量,该变量可能具有(次要的)内存影响,并且键入的内容太多:
int recordsPerPage = config.fetch_value('records per page')
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
这都是一行,并且只获取数据一次:
int pageCount = (records - 1) / config.fetch_value('records per page') + 1;