如何对整数除法的结果进行四舍五入?

2022-08-31 04:45:08

我特别在考虑在使用C#或Java等语言时如何显示分页控件。

如果我有 x 个项目,我想在每页以 y 的块显示,则需要多少页?


答案 1

找到一个优雅的解决方案:

int pageCount = (records + recordsPerPage - 1) / recordsPerPage;

资料来源:数字转换,罗兰·巴克豪斯,2001年。


答案 2

在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;