我有这样的事情:
int numberOfPages = (float)((float)totalItems / (float)numberOfColumns);
totalItems = 60,numberOfColumns = 16,我期待numberOfPages为3.75,但它返回3,我需要它为3.75所以我可以向上舍入。
我做错了什么?
答案 0 :(得分:2)
作为答案,根据要求:您正在进行浮点数学运算,但随后将结果分配给整数:
int numberOfPages = (float)((float)totalItems / (float)numberOfColumns);
在C(以及像Objective-C这样的派生语言)中,浮点数通过删除小数点后的任何内容转换为整数。你无法用这种方式向上,只有向下。您可以使用lroundf
直接从float
舍入到{长} int
:
int numberOfPages = lroundf(totalItems / (float)numberOfColumns);
请注意,您无需将/
的两个操作数显式地转换为float
。如果一个操作数是float
,那么编译器将提升另一个操作数,结果也将是float
。