Objective-cのフォーマット指定子まとめ


わかればいいやという程度、以下ドキュメントの適当意訳
ドキュメント外のフォーマット指定子も少しずつ追記予定。

Apple公式 String Format Specifiers

指定子 説明
%@ Objective-Cのオブジェクト、descriptionWithLocale又はdescriptionによって返された文字列。CFTypeRefオブジェクトの場合はCFCopyDescriptionの結果を表示する
%% '%' 1文字
%d, %D, %i 符号付き32bit整数(int)
%u, %U 符号なし32bit整数(unsigned int)
%hi 符号付き16bit整数(short)
%hu 符号なし16bit整数(unsigned short)
%hu 符号なし16bit整数(unsigned short)
%qi 符号付き64bit整数(long long)
%x 符号なし32bit整数(unsigned int), 0-9と小文字のa-fを用いた16進数で表示
%X 符号なし32bit整数(unsigned int), 0-9と大文字のA-Fを用いた16進数で表示
%qx 符号なし64bit整数(unsigned long long), 0-9と小文字のa-fを用いた16進数で表示
%lu 符号なし倍精度整数(unsigned long)
%qX 符号なし64bit整数(unsigned long long), 0-9と大文字のA-Fを用いた16進数で表示
%o, %O 符号なし32bit整数(unsigned int), 8進数で表示
%f 64bit浮動小数点数 (double)
%e 64bit浮動小数点数 (double),小文字のe付きの科学的記数法で表示
%E 64bit浮動小数点数 (double),大文字のE付きの科学的記数法で表示
%g 64bit浮動小数点数 (double),指数部が-4以下または精度以上の整数は%e、その他の場合は%fで出力 (下記サンプルコード参照)


%gのサンプルコード

#import <Foundation/Foundation.h>

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

        double d_value_max = DBL_MAX;
        //doubleはおおむね10の-307乗から10の308乗、有効15桁の実数を表すことができます。        
        double val_A = 145.789;
        double val_B = 0.0001;    //指数が-4なので%f形式
        double val_C = 0.00001;   //指数が-5なので%e形式
        double val_D = 1234567.07;//整数桁が7桁以上で%e形式
        double val_E = 12345.6366;//整数部が7桁未満で少数を含む場合、四捨五入がおこる
        double val_F = 15.0000;   //少数部の末尾が0の場合、0は表示されない
        int    val_G = 23445;     //整数型をいきなり%gで出そうとすると予期しない値を返す事がある
        NSLog(@"double型の最大値を%%fで出力%f",d_value_max);
        NSLog(@"double型の最大値を%%gで出力%g",d_value_max);
        NSLog(@"val_Aの値:%g",val_A);        
        NSLog(@"val_Bの値:%g",val_B);        
        NSLog(@"val_Cの値:%g",val_C);        
        NSLog(@"val_Dの値:%g",val_D);                
        NSLog(@"val_Eの値:%g",val_E);
        NSLog(@"val_Fの値:%g",val_F);       
        NSLog(@"val_Gの値:%g",val_G);        
    }
    return 0;
}