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
中。如果您将其放入答案中,我会接受。