HOME > NSNumber

NSNumber

NSNumber型はプリミティブ型(int型,float型,BOOL型など)をオブジェクトとして扱いたい場合に使用します。一般的にラッパークラスと呼ばれます。

NSNumberのクラス階層

NSObject

NSValue

NSNumber

NSNumber型の生成


// short型→NSNumber型
NSNumber *num = [NSNumber numberWithShort:32767];

// int型→NSNumber型
NSNumber *num = [NSNumber numberWithInt:2147483647];

// long型→NSNumber型
NSNumber *num = [NSNumber numberWithLong:2147483647];

// float型→NSNumber型
NSNumber *num = [NSNumber numberWithFloat:42.195f];

// double型→NSNumber型
NSNumber *num = [NSNumber numberWithDouble:3.1415f];

// BOOL型→NSNumber型
NSNumber *num = [NSNumber numberWithBool:YES];

// char型→NSNumber型
NSNumber *num = [NSNumber numberWithChar:a];

NSNumberのメソッド

【NSNumberの主要メソッド】
メソッド名 説明
-(NSString*)stringValue NSString型にキャストする
(例)NSString *str = [num stringValue];
-(short)shortValue short型にキャストする
(例)short val = [num shortValue];
-(int)intValue int型にキャストする
(例)int val = [num intValue];
-(long)longValue long型にキャストする
(例)long val = [num longValue];
-(float)floatValue float型にキャストする
(例)float val = [num floatValue];
-(double)doubleValue double型にキャストする
(例)double val = [num doubleValue];
-(BOOL)boolValue BOOL型にキャストする
(例)BOOL val = [num boolValue];
-(char)charValue char型にキャストする
(例)char val = [num charValue];
-(BOOL) isEqualToNumber:
(NSNumber *)aNumber
同じかどうか比較する
(例)BOOL b = [num1 isEqualToNumber:num2];
-(NSComparisonResult)
compare:(NSNumber *)aNumber
大小の比較する
(例)NSComparisonResult c = [num1 compare:num2];
 ※NSComparisonResultの定数:
 NSOrderedAscending:「num1 < num2」の状態
 NSOrderedSame:「num1 == num2」の状態
 NSOrderedDescending:「num1 > num2」の状態

主要なメソッドのみ掲載しています。
 上記「NSNumberのクラス階層」にあるクラスのメソッドも使用できます。

数値をカンマ区切り形式にする

数値をカンマ区切り形式の文字列で取得したい場合は、数値をNSNumber型にした上で、NSNumberFormatterクラスを使用します。
以下が使用例です。


//NSNumber型の数値をカンマ区切りの小数点第2位までのフォーマットに変換する
NSNumber *val = [NSNumber numberWithInt:123];
NSNumberFormatter *fmt = [[[NSNumberFormatter alloc] init] autorelease];
[fmt setPositiveFormat:@"#,##0.00;0.00;-#,##0.00"];
NSString *str = [fmt stringForObjectValue:val];

※setPositiveFormatの形式を替えればお好みのフォーマットに出来ます。