2012-07-07 136 views
19

我缺少一些基本的东西,在这里。一定已经忘记了。但基本上,我有以下代码的目的是一个NSNumber,将其转换为浮点数,将其乘以2并将结果返回给NSNumber。我在最后一步遇到了一个错误,我很难过。我应该在那里做什么。将浮点数转换为NSNumber

NSNumber *testNSNumber = [[[NSNumber alloc] initWithFloat:200.0f] autorelease]; 
float myfloatvalue = [testNSNumber floatValue] * -2; 
NSLog(@" Test float value %1.2f \n\n",myfloatvalue); 
[testNSNumber floatValue:myfloatvalue]; // error here is floatValue is not found 

回答

43

的方法的NSNumberfloatValue不带参数。如果你想设置一个新的浮点数,你需要重新分配testNSNumber,因为NSNumber不具有可变对方:

testNSNumber = @(myfloatvalue); // The new syntax 

testNSNumber = [NSNumber numberWithFloat: myfloatvalue]; // The old syntax 
+1

为什么不使用@(myfloatvalue)? – 2015-07-02 09:45:37

+0

@JulianKról谢谢!这个答案已经在引入'@(...)'语法前一年多的时间里写出来了。我更新了它以反映新的语法。 – dasblinkenlight 2015-07-02 12:41:05

+0

现在好多了:)我知道这是一个问题,要保持张贴的答案新鲜个人,但作为一个社区,我们可以实现这一点。 – 2015-07-02 12:43:09

0

雨燕2.0的版本:

let testNSNumber: NSNumber = NSNumber(float: myfloatvalue) 
13

雨燕3.0:

let testNSNumber: NSNumber = NSNumber(value: myfloatvalue)