3 回答
TA貢獻1871條經驗 獲得超13個贊
在CPU級別,轉換為浮點數和返回浮點數似乎是對時間的巨大浪費。
伊恩·尼爾森(Ian Nelson)的解決方案:
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
可以簡化為:
int pageCount = (records - 1) / recordsPerPage + 1;
AFAICS,它沒有Brandon DuRette指出的溢出錯誤,并且由于它只使用一次,因此,如果它來自昂貴的函數來從配置文件中獲取值,則不需要專門存儲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;
TA貢獻1848條經驗 獲得超10個贊
對于C#,解決方案是將值轉換為雙精度值(因為Math.Ceiling需要雙精度值):
int nPages = (int)Math.Ceiling((double)nItems / (double)nItemsPerPage);
在Java中,您應該對Math.ceil()執行相同的操作。
添加回答
舉報
