我正在尝试获取使用float初始化的NSNumber的整数值,我期待intValue处理转换(正如文档所说)。
#import <Foundation/Foundation.h>
#import "Fraction.h"
#import "Complex.h"
#import "ComplexMathOps.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSNumber *myNum, *floatNum, *intNum;
intNum = [NSNumber numberWithInt:100];
floatNum = [NSNumber numberWithFloat:99];
myNum = [floatNum intValue];
NSLog(@"%@",myNum);
[pool drain];
return 0;
}
我做错了什么?在不同数字类型之间进行转换的正确方法是什么?
答案 0 :(得分:5)
它对我来说很好,这样声明:
NSNumber * floatNum = [NSNumber numberWithFloat:99];
NSLog(@"%d",[floatNum intValue]);
答案 1 :(得分:5)
[floatNum intValue]返回一个int类型,但是你将myNum声明为NSNumber。 将myNum声明为int,一切都按预期工作。
答案 2 :(得分:2)
你应该做的是
myNum = [floatNum integerValue];
因为integerValue
返回NSSNumber *
而intValue
会返回int