Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 一个整数除以2会得到一个整数吗?_Objective C_Nsarray - Fatal编程技术网

Objective c 一个整数除以2会得到一个整数吗?

Objective c 一个整数除以2会得到一个整数吗?,objective-c,nsarray,Objective C,Nsarray,我试图在目标C中做到这一点: self.nsarray.count/2 如果计数等于5,结果是5/2=2.5还是5/2=2 我正在记录答案,它只显示2。我不确定这是实际答案还是2,因为我不得不使用%u格式来记录答案。还请解释此结果的“原因”。在Objective-C中,两个整数的除法始终会产生一个整数,在您的情况下,它将是整数,2在这种情况下是有效的结果。要获得浮点结果,至少应键入一个操作数float,或者至少将其中一个操作数强制转换为float,因此以下是一些选项: // Second pa

我试图在目标C中做到这一点:

self.nsarray.count/2
如果计数等于5,结果是5/2=2.5还是5/2=2


我正在记录答案,它只显示2。我不确定这是实际答案还是2,因为我不得不使用
%u
格式来记录答案。还请解释此结果的“原因”。

在Objective-C中,两个整数的除法始终会产生一个整数,在您的情况下,它将是整数,
2
在这种情况下是有效的结果。要获得浮点结果,至少应键入一个操作数
float
,或者至少将其中一个操作数强制转换为
float
,因此以下是一些选项:

// Second part of division is float, so result is float as well
float result = self.array.count/2.

// First part of division is float, so result is float as well
float result2 = (float)self.array.count/2 // or you can type ((float)self.array.count)/2 for more clearance
请注意,将结果强制转换为
float
在您的案例中无效,例如在
(float)(5/2)
中,由于您仅将
NSIntger
强制转换为
float


浮点通常以NSLog格式格式化,因为%f或%g

CGFloat是一个非常糟糕的选择-在32位系统上,它只有24位的精度,因此如果超过1600万个项目,您将得到错误的结果。这是一个只影响超级用户的bug,在测试过程中永远不会被发现。使用double。CGFloat中的CG代表核心图形。除了图形对象的坐标外,不要使用CGFloat。@gnasher729关于
CGFloat
/
float
类型的正确点,更改了我的答案,引用了该选项。。。但是,如果使用
double
而不是
float
,我们真的会得到错误的结果吗,因为我们只除以2?所以小数部分只有一个数字(5或0),那么我们不应该对
float
精度很好吗?