# printf_conversion

mprintf, msprintf, mfprintf 変換仕様

## 説明

`mprintf` , `msprintf` , `mfprintf`における各変換仕様. `format` パラメータは以下のような構文を有します:

- A % (パーセント) 符号.

- 0個以上の `options`で, 変換仕様の意味を修正します. 以下のリストに`option`文字とその意味を示します:

  - - : 左揃え, フィールド内では, 変換の結果.

  - + : (+または -)を指定する符号変換の結果を開始.

  - '空白' : 符号変換後の最初の文字が符号ではない場合に結果の 前に空白文字を付加します. (空白) および +オプションが共に指定された場合, (空白) オプションは無視されます.

  - # : 別の形式に値を変換. `c`, `d`, `i`, `s`, および `u` 変換の場合, `#`オプションの効果はありません. `o` 変換の場合, `#` は 結果の最初の桁を強制的に0 (ゼロ)にし,精度を増加させます. `x` および `X`変換の場合, ゼロでない結果の前に0xまたは0Xが付加されます. `e, E, f, g,` および `G`変換の場合, 小数点以下の値がない場合でも結果には常に小数点が含まれます. `g` および `G` 変換の場合, 末尾の0は結果から除かれません.

  - 0 : `d`, `i`, `o`, `u`, `x`, `X`, `e`, `E`, `f`, `g`, および `G`変換において (符号または基底の指示子の後に) 前に0をつけることによりフィールド幅内を埋めます: 空白によるパディングは行われません `0` および `\-`(ダッシュ)が共に指定された場合, `0`フラグは無視されます. `d`, `i`, `o` `u`, `x`, および `X` 変換の場合, 精度が指定されると, `0` フラグも無視されます.

オプションの10進数文字列は 最小フィールド幅を指定します. 変換された値の文字がこのフィールド幅よりも少ない場合, フィールドはフィールド幅の指定長まで左側にパディングされます. 左寄せオプションが指定された場合, フィールドは右側にパディングされます.

オプションの精度. 精度は `.` (ドット)の後に 10進数文字列が続きます. 精度が指定されない場合, このパラメータは 0 (ゼロ)と扱われます. 精度指定子:

- `d`, `u`, `o`, `x`, または `X`変換に関する最小表示桁数

- `e`, `E`, および `f` における小数点の後に表示する桁数

- `g` および`G`変換における 有効桁の最大値

- `s`変換において文字列から出力される 最大文字数

- 適用される変換の種類を示す文字:

  - % : 変換しません. %を表示.

  - d,i: 整数 `value` を受け取り, 符号付き10進数表記に変換します. 精度は表示される最小の桁数を指定します. 変換される値がより少ない桁数で表せる場合, 前にゼロを付加して拡張されます. デフォルトの精度は1です.値0を精度0で変換した結果は, ヌル文字列となります. 前に付加する文字をゼロとしてフィールド幅を指定すると, フィールド幅までの値では前にゼロを付加するパディングが 行われます.

  - u : 整数 `value` を受け取り, 符号なし10進数表記に変換します. 精度は表示される最小の桁数を指定します. 変換される値がより少ない桁数で表せる場合, 前にゼロを付加して拡張されます. デフォルトの精度は1です.値0を精度0で変換した結果は, ヌル文字列となります. 前に付加する文字をゼロとしてフィールド幅を指定すると, フィールド幅までの値では前にゼロを付加するパディングが 行われます.

  - o : 整数 `value` を受け取り, 符号なし8進数表記に変換します. 精度は表示される最小の桁数を指定します. 変換される値がより少ない桁数で表せる場合, 前にゼロを付加して拡張されます. デフォルトの精度は1です.値0を精度0で変換した結果は, ヌル文字列となります. 前に付加する文字をゼロとしてフィールド幅を指定すると, フィールド幅までの値では前にゼロを付加するパディングが 行われます. フィールド幅に8進数を使用することはできません.

  - x, X : 整数 `value` を受け取り, 符号なし16進数表記に変換します.`x`変換では, 文字``abcdef''が使用されます;`X`変換では, 文字``ABCDEF''が使用されます. 精度はは表示される最小の桁数を指定します. 変換される値がより少ない桁数で表せる場合, 前にゼロを付加して拡張されます. デフォルトの精度は1です.値0を精度0で変換した結果は, ヌル文字列となります. 前に付加する文字をゼロとしてフィールド幅を指定すると, フィールド幅までの値では前にゼロを付加するパディングが 行われます.

  - f : float または double の`value` を受け取り, %[\-]`ddd.ddd`形式の10進数表記に変換します. 小数点以下の桁数は,精度指定子に等しくなります.

    - 精度が指定されない場合, 6桁が出力されます.

    - 精度がゼロの場合, 小数点は表示されず, システムは`value`に最も近い整数に丸めた数を 出力します.

    - 小数点が出力される場合,最低でも1桁がその前に出力されます.

  - e, E : 実数を受け取り,指数形式%[\-]`d.ddde`+/\-`dd` に変換します. 小数点の前に1桁があり,小数点の後の桁数は精度指定子に等しくなります.

    - 精度が指定されない場合, 6桁が出力されます.

    - 精度がゼロの場合, 小数点は表示されません.

    - `E` 変換文字の場合, 指数の前の e の代わりに E を付けた数値を出力します. 指数には常に2桁以上が含まれます. 値が 0 の場合, 指数は 0 となります.

  - g, G : 実数を受け取り,有効桁数を指定する精度を付けた `e`, `E`, または `f`変換文字の形式に変換します. 末尾のゼロは結果から削除されます. 小数点は数字が続く場合にのみ表示されます. 使用される形式は変換される値に依存します.

    変換結果の指数が-4よりも小さい場合,または, 精度より大きいか等しい場合に, `e` (使用されるフラグが`G`の場合は `E`)形式が使用されます.

  - c : 整数値を受け取り,文字に変換します.

  - s : 文字列 `value` を受け取り, 文字列から末尾または精度に示された文字数に達するまで, 文字に変換します.精度が指定されない場合,末尾までの全ての文字が 表示されます.

フィールド幅または精度は, 桁文字の代わりに`*` (アスタリスク)で 示すことができます. この場合,整数 `value`パラメータは フィールド幅または精度を指定します. 出力に変換される`value` パラメータは 変換文字が達するまで取得されません. このため, フィールド幅または精度を指定するパラメータは変換される値よりも 前に現れる必要があります.

変換の結果がフィールド幅よりも広い場合, このフィールドは変換結果を含められる幅まで拡張されます.

+記号の意味は`+`または(空白)整形オプションの どちらが指定されたかに依存します.

指数形式 %e の表示はプレットフォームに依存し, 指数の桁数は異なります.

プラットフォーム | 例: msprintf("%e",1.23e4)
Windows | 1.23000e+004
Linux/Mac OS | 1.23000e+04

## 例

    mprintf('a string: %s\n', 'Scilab');
    mprintf('an integer: %d\n', 10);
    mprintf('an integer: %4d\n', 10);
    mprintf('a left justified integer: %-4d\n', 10);
    mprintf('an integer converted to float: %#fd\n',10);
    mprintf('an integer with a sign: %+4d\n', 10);
    mprintf('an integer with a sign: %+4d\n', -10);
    mprintf('an integer padded with zeros: %04d\n', 10);
    mprintf('an unsigned integer: %u\n', 10);
    mprintf('an unsigned integer: %4u\n', -10);
    mprintf('an integer converted to hexadecimal: %x\n', 10);
    mprintf('a float: %d\n', %pi);
    mprintf('a float: %3.2d\n', %pi);
    mprintf('a float (exponential form): %3.2e\n', %pi);
    mprintf('a float (exponential form): %3.2g\n', %pi);
    mprintf('a character: %c\n', 'a');
    mprintf('a character: %c\n', 'aaa');

## 参照

- mprintf
- mfprintf
- msprintf