Chuyển đổi sang điểm nổi và trở lại có vẻ như là một sự lãng phí rất lớn thời gian ở cấp độ CPU.
Giải pháp của Ian Nelson:
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
Có thể được đơn giản hóa để:
int pageCount = (records - 1) / recordsPerPage + 1;
AFAICS, đây không phải là lỗi tràn mà Brandon DuRette đã chỉ ra và vì nó chỉ sử dụng một lần, nên bạn không cần lưu trữ recordsPerPage đặc biệt nếu nó xuất phát từ một hàm đắt tiền để lấy giá trị từ tệp cấu hình hoặc một cái gì đó
Tức là điều này có thể không hiệu quả, nếu config.fetch_value sử dụng tra cứu cơ sở dữ liệu hoặc một cái gì đó:
int pageCount = (records + config.fetch_value('records per page') - 1) / config.fetch_value('records per page');
Điều này tạo ra một biến bạn không thực sự cần, có thể có ý nghĩa bộ nhớ (nhỏ) và chỉ cần gõ quá nhiều:
int recordsPerPage = config.fetch_value('records per page')
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
Đây là tất cả một dòng và chỉ tìm nạp dữ liệu một lần:
int pageCount = (records - 1) / config.fetch_value('records per page') + 1;