NSNumber十进制到C原始值?

时间:2011-10-25 12:05:55

标签: objective-c cocoa nsnumber

我想将小数NSNumber转换为int或其他我可以用数学形式的形式。这是我项目的带注释的代码:

NSNumber *Left = [left valueForOutputKey:@"Y"];

此行获取Quartz Composer Outlet,通常值约为0.512。

基本上,我想将此乘以10,然后执行一些操作,例如大于和小于查看它所在的范围。

2 个答案:

答案 0 :(得分:3)

由于看起来您正在处理小数组件,因此您希望将其转换为浮点数或双精度来执行操作,具体取决于您期望该值的大小。浮动应该没问题,除非你处理的是大量或精确的数字。这是它的外观,例如:

float lValue = [[left valueForOutputKey:@"Y"] floatValue];

lValue *= 10;

if (lValue < 10) {
    // do whatever
}
else if (lValue > 50) {
    // do whatever
}

然后将值存回您的插座或其他任何东西,然后将其打包回NSNumber:

NSNumber *newValue = [NSNumber numberWithFloat:lValue];

[left setValue:newValue forKey:@"Y"];

您可能必须将newValue转换为字符串才能在控件中显示它,只需使用[newValue stringValue]即可。

答案 1 :(得分:1)

使用NSNumber的一种方法:

int leftInt = [Left intValue];
float leftFloat = [Left floatValue];
double leftDouble = [Left doubleValue];