Objective-C数学未返回正确的浮点值

Objective-C数学未返回正确的浮点值,objective-c,Objective C,我有这样的想法: int numberOfPages = (float)((float)totalItems / (float)numberOfColumns); totalItems=60,numberOfColumns=16,我希望numberOfPages为3.75,但它返回3,我需要它为3.75,这样我才能进行汇总 我做错了什么?回答如下:你在做浮点运算,但将结果赋给一个整数: int numberOfPages = (float)((float)totalItems / (float

我有这样的想法:

int numberOfPages = (float)((float)totalItems / (float)numberOfColumns);
totalItems=60,numberOfColumns=16,我希望numberOfPages为3.75,但它返回3,我需要它为3.75,这样我才能进行汇总


我做错了什么?

回答如下:你在做浮点运算,但将结果赋给一个整数:

int numberOfPages = (float)((float)totalItems / (float)numberOfColumns);
在C语言(以及像Objective-C这样的派生语言)中,浮点数通过删除小数点后的任何内容转换为整数。你不能这样围拢,只能向下围拢。您可以使用
lroundf
直接从
float
四舍五入到(长)
int

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

请注意,您不需要将
/
的两个操作数显式强制转换为
float
。如果一个操作数是
浮点
,则编译器将提升另一个操作数,结果也将是
浮点

,作为回答,如请求所示:您正在进行浮点运算,但随后将结果赋给整数:

int numberOfPages = (float)((float)totalItems / (float)numberOfColumns);
在C语言(以及像Objective-C这样的派生语言)中,浮点数通过删除小数点后的任何内容转换为整数。你不能这样围拢,只能向下围拢。您可以使用
lroundf
直接从
float
四舍五入到(长)
int

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

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

,这是因为您试图将结果存储在
int
中,而不是
浮点
。true。如果将其放入答案中,我会接受的。这是因为您试图将结果存储在
int
而不是
float
中。如果您将其放入答案中,我会接受。