Object-C中的数字对象

时间:2022-10-07 19:48:26
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

@autoreleasepool {

/*
Object-C中的数字对象:
1.int,float,long,double等都是Object-C中的基本数据类型,不是对象,也就是说不能够向他们发送消息。
2.有时需要将值类型作为对象使用,如NSArray,要求存储的必须是对象,因此不能直接将基本数据类型放入数组。
3.如果需要存储基本数据类型(包括char),可以使用NSNumber类。
*/

NSNumber *intNumber,*longNumber,*floatNumber,*charNumber,*doubleNumber;

//int型值
intNumber=[NSNumber numberWithInt:100];
NSLog(@"%i",[intNumber intValue]);

//long型值
longNumber=[NSNumber numberWithLong:0xabcdef];
NSLog(@"%lx",[longNumber longValue]);

//char型值
charNumber=[NSNumber numberWithChar:'A'];
NSLog(@"%c",[charNumber charValue]);

//float型值
floatNumber=[NSNumber numberWithFloat:100.00];
NSLog(@"%g",[floatNumber floatValue]);

//double型值
doubleNumber=[NSNumber numberWithDouble:12345e+15];
NSLog(@"%lg",[doubleNumber doubleValue]);

//验证两个值是否相等
if([intNumber isEqualToNumber:floatNumber]==YES)
{
NSLog(@"%i和%g比较,值相等",[intNumber intValue],[floatNumber floatValue]);
}
else
{
NSLog(@"%i和%g比较,值不等",[intNumber intValue],[floatNumber floatValue]);
}

//两个值比较大小
if([intNumber compare:floatNumber]==NSOrderedAscending)
{
NSLog(@"%i和%g比较,第一个数<第二个数",[intNumber intValue],[floatNumber floatValue]);
}
else
{
NSLog(@"%i和%g比较,第一个数≥第二个数",[intNumber intValue],[floatNumber floatValue]);
}
}
return 0;
}

输出结果:

2014-02-12 21:59:34.847 04.数字[1229:303] 100

2014-02-12 21:59:34.849 04.数字[1229:303] abcdef

2014-02-12 21:59:34.849 04.数字[1229:303] A

2014-02-12 21:59:34.850 04.数字[1229:303] 100

2014-02-12 21:59:34.850 04.数字[1229:303] 1.2345e+19

2014-02-12 21:59:34.850 04.数字[1229:303] 100100比较,值相等

2014-02-12 21:59:34.851 04.数字[1229:303] 100100比较,第一个数第二个数

Program ended with exit code: 0