Преобразование в плавающую точку и обратно кажется огромной тратой времени на уровне процессора.
Решение Яна Нельсона:
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;