Objective c 将浮点值转换为id。如何执行此操作?

Objective c 将浮点值转换为id。如何执行此操作?,objective-c,xcode,floating-point,Objective C,Xcode,Floating Point,可能重复: 它需要id值,但我的变量是float。我想导入tmpValue数组1。对象我该怎么做 tmpToplam = tmpToplam + ([[self.closeData objectAtIndex:i]floatValue] - tmpToplam)* expCarpan; [tmpValue replaceObjectAtIndex:1 withObject:tmpToplam]; 为什么不使用NSString StringWithFormat将

可能重复:

它需要id值,但我的变量是float。我想导入tmpValue数组1。对象我该怎么做

tmpToplam =  tmpToplam + ([[self.closeData objectAtIndex:i]floatValue] - tmpToplam)* expCarpan;


            [tmpValue replaceObjectAtIndex:1 withObject:tmpToplam]; 

为什么不使用NSString StringWithFormat将tmpToplam转换为字符串?实际上,在数组中,您需要放置一个对象,而float不被视为对象。当然,字符串是一个对象

id
是指向目标c对象的指针,在cocoa通常是
NSObject
的情况下,因此需要将浮点值包装在
NSNumber
中(它继承自
NSObject
NSNumber
可以处理许多其他基本类型。

您可能希望在NSNumber中包装浮动,因为id只是指向“任何Objective-C对象”的指针,而NSNumber是包装数字的合适对象-C类:

float a = 2.0;
float b = 3.0;
NSNumber *aNumber = [NSNumber numberWithFloat:a];
NSNumber *bNumber = [NSNumber numberWithFloat:b];
NSArray *array = [NSArray arrayWithObjects:aNumber, bNumber, nil];

将浮点数转换为字符串?这根本不是一个好主意。NSNumber是做这件事的方法,而不是NSString。我的错。NSNumber肯定是更好的方法,但是NSString也是可能的(当然不是一个好方法)。+1。更具体地说,NSNumber是NSValue的一个子类(当然它最终派生自NSObject)。True。NSValue更通用,可以用于结构、指针和其他东西。更改了我的答案以避免任何混淆。