Преобразование в плавающую точку и обратно кажется огромной тратой времени на уровне процессора.
Решение Яна Нельсона:
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
Может быть упрощено до:
int pageCount = (records - 1) / recordsPerPage + 1;
AFAICS, в нем нет ошибки переполнения, на которую указывал Брэндон Дуретт, и поскольку она использует ее только один раз, вам не нужно специально хранить recordsPerPage, если она исходит из дорогой функции для извлечения значения из Конфигурационный файл или что-то.
т.е. это может быть неэффективно, если 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;