Objective-C Math没有返回正确的浮点数

时间:2017-04-28 19:37:16

标签: objective-c

我有这样的事情:

int numberOfPages = (float)((float)totalItems / (float)numberOfColumns);

totalItems = 60,numberOfColumns = 16,我期待numberOfPages为3.75,但它返回3,我需要它为3.75所以我可以向上舍入。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

作为答案,根据要求:您正在进行浮点数学运算,但随后将结果分配给整数:

int numberOfPages = (float)((float)totalItems / (float)numberOfColumns);

在C(以及像Objective-C这样的派生语言)中,浮点数通过删除小数点后的任何内容转换为整数。你无法用这种方式向上,只有向下。您可以使用lroundf直接从float舍入到{长} int

int numberOfPages = lroundf(totalItems / (float)numberOfColumns);

请注意,您无需将/的两个操作数显式地转换为float。如果一个操作数是float,那么编译器将提升另一个操作数,结果也将是float