Konwersja na zmiennoprzecinkowe i wstecz wydaje się ogromną stratą czasu na poziomie procesora.
Rozwiązanie Iana Nelsona:
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
Można uprościć:
int pageCount = (records - 1) / recordsPerPage + 1;
AFAICS, nie ma w nim błędu przepełnienia, na który zwrócił uwagę Brandon DuRette, a ponieważ używa go tylko raz, nie trzeba przechowywać recordPerPage specjalnie, jeśli pochodzi z drogiej funkcji pobierania wartości z pliku konfiguracyjnego lub coś.
Może to być nieefektywne, jeśli config.fetch_value użył wyszukiwania bazy danych lub czegoś takiego:
int pageCount = (records + config.fetch_value('records per page') - 1) / config.fetch_value('records per page');
To tworzy zmienną, której tak naprawdę nie potrzebujesz, która prawdopodobnie ma (niewielkie) implikacje pamięci i po prostu zbyt dużo pisania:
int recordsPerPage = config.fetch_value('records per page')
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
To wszystko jest jedna linia i dane są pobierane tylko raz:
int pageCount = (records - 1) / config.fetch_value('records per page') + 1;