トップ  >  リファレンス  >  共通関数  >  PrintFormat
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ
PrintFormat


PrintFormat


プリセットフォーマットに従って、エキスパートログにメッセージを表示します。

関数書式:
void  PrintFormat(
   string format_string,     // フォーマット文字列
   ...           // シンプルな型の値
   );



■引数
引数名 初期値 I/O 詳細
format_string - In フォーマット文字列は簡単な記号で構成され、
format_stringの後の引数が続く場合、フォーマット仕様が含まれます。
... - In シンプルな型の値をカンマで区切って複数渡す事が出来ます。
引数の総数はformat_stringを含めて64を超える事は出来ません。


■戻り値
無し


■備考
ストラテジーテスターの最適化中では動作しません。

引数の値・順序・型は正確に修飾子のセットと正確に一致している必要があります。
一致していない場合、結果は不明です。

尚、PrintFormat()関数はprintf()と書いて使用する事が出来ます


フォーマット文字列は(format_stringの)後に引数が続く場合、
この文字列はフォーマット仕様が含まれている必要があります。
フォーマット仕様は常にパーセント記号(%)で始まります。

左から右へフォーマット文字列が読み出されます。
最初のフォーマット仕様が満たされた場合(存在する場合)、
フォーマット文字列はプリセット仕様に従って最初のパラメータの値と変換して出力します。

第2のフォーマット仕様がある場合、次の引数の値と変換して出力して・・・
というようにフォーマット文字列終了まで処理されます。


フォーマット仕様の形式は以下の通りです。

  %[flags][width][.precision][{h | l | ll | I32 | I64}]type


フォーマット仕様の各フィールドは、単純な記号または単純なフォーマットオプションを示す番号です。
最もシンプルな形式の仕様は、パーセント記号(%)と出力パラメータのタイプを定義しているシンボルです(例:%s)。

出力するフォーマット文字列にパーセント記号を表示させたい場合は、%%を使用します。


フラグ[flags]
フラグ 詳細 デフォルト動作
- 左詰め表示する 省略時は右詰め
+ 符号を付ける 省略時は"-"符号のみ
0 0を詰める。
0フラグは整数形式(i,u,x,X,o,d)で指定します。
精度仕様が設定されている場合(例えば %0.4d)は0は無視されます。
省略時は0詰めしません
スペース(空白) 整数の場合、出力値の前にスペースが挿入されます。 スペース挿入されません
# o,x,Xフォーマットと一緒に使用する場合、
出力値の前に、0,0x,0Xが追加されます。
何も追加されません
# e,E,Aフォーマットと一緒に使用する場合、
値は常に小数点で表示されます。
ゼロ以外の小数部分がある場合のみ小数点表示されます
# g,Gフォーマットと一緒に使用する場合、
出力値の小数点の有無を定義し、小数点以下のゼロの省略防止します。
フォーマットc,d,i,u,sと一緒に使用した場合、#フラグは無視されます。
ゼロ以外の小数点がある場合のみ小数点表示されます。
小数点以下のゼロは省略されます。






幅[width]

正数(負数では無い)の小数は、出力シンボルの最小数を設定します。
出力シンボルの数値が指定された幅[width]よりも小さい場合、スぺースに対応する数値は位置に応じて左から追加されます。
-フラグ[flag]設定の場合は、右から追加されます。

0フラグ[flag]が存在する場合、ゼロの対応する数値は出力値の前に追加されます。
出力シンボルの数値が指定された幅[width]よりも大きい場合、出力値がカットされる事はありません。

アスタリスク(*)が幅[width]として指定されている場合は、
int型の値がパラメータリストに対応する位置にしなければなりません。
これは出力値の幅を指定する為に使用されます。


精度[precision]

正数(負数では無い)の出力精度(小数点以下の桁数)を設定します。
幅[width]仕様とは異なり、精度[precision]仕様は小数部分の一部をカットまたは丸める事が出来ます。

精度[precision]仕様はフォーマットタイプによって異なります。


フォーマット 詳細 デフォルト動作
a,A 小数点以下の桁数を設定します デフォルト精度:6
c,C 使用できません -
d,i,u,o,x,X 出力桁の最小数を設定します。
対応するパラメータ桁数が精度よりも小さい場合、0が出力値の左側に追加されます。
出力桁数が指定された精度よりも大きい場合は、出力値はカットされません。
デフォルト精度:1
e,E,f 小数点以下の出力桁数を設定します。
最後の数字は四捨五入されます。
デフォルト精度:6
精度設定が0または小数部が存在しない場合、
小数点以下は表示されません。
g,G 意味のある数字の最大数を設定します。 6つの意味のある数字が出力されます
s,S 文字列の出力シンボル数を設定します。
文字列の長さが精度を超えた場合、文字列はカットされます。
文字列全体が出力されます


接頭辞(データサイズ指定) [{h | l | ll | I32 | I64}]
接頭辞 型の指定子
int l d, i, o, x, X
uint l o, u, x, X
long ll d, i, o, x, X
short h d, i, o, x, X
ushort h o, u, x, X
int l32 d, i, o, x, X
uint l32 o, u, x, X
long l64 d, i, o, x, X
ulong l64 o, u, x, X






種類[type]
type 出力フォーマット
c int short型の記号(Unicode)
C int char型の記号(ANSI)
d int 符号付き10進数整数
i int 符号付き10進数整数
o int 符号無し8進数整数
u int 符号無し10進数整数
x int 符号なし16進整数。(小文字区別:abcdef)
X int 符号なし16進整数。(大文字区別:ABCEDF)
e double 実数の指数形式表示。
フォーマット例:[-]d.dddde[符号]ddd
・最初の[-]は符号。負数の場合は-符号をつける。
・小数点前のdは1桁の数字。
・小数点以下(eの前)のddddは1以上の10進数。
・eの後の[符号]は指数の符号。マイナスの場合は-をつける。省略時は+相当。
・小数点以下(eの後)のddd は指数の大きさを決定する数値
E double eのフォーマットと同様。
但し、出力時のe記号が大文字のEになります。
f double 実数表示。
フォーマット例:[-]dddd.dddd
・最初の[-]は符号。負数の場合は-符号をつける。省略時は正数。
・ddddは1以上の10進数。

小数点より前の表示桁数は、数値サイズによって異なります。
小数点以下の桁数は必要な精度に依存します。
g double フォーマットf,eをコンパクトにした出力
G double フォーマットF,Eをコンパクトにした出力
a double 実数をIEEE754形式で表示。
フォーマット:[-]0xh.hhhh p±dd
・h.hhhhは仮数部(小文字の16進数で表示)
・ddは指数、10進数で表示。

小数点以下の桁数は精度仕様によって決定されます。

A double aのフォーマットと同様。
但し仮数部の16進数が大文字で表示され、指数部の記号が大文字のPで表示されます。
s string 文字列出力







サンプルソース:
#property strict

void OnInit(){
   printf("DBL_MAXの指数表示(%%e)   : %e"       ,DBL_MAX);
   printf("DBL_MAXの指数表示(%%.15e)  : %.15e"   ,DBL_MAX);
   printf("DBL_MAXの指数表示(%%15.10e) : %15.10e" ,DBL_MAX);
   printf("0   の指数表示(%%15.10e) : %15.10e" ,0);
   printf("10   の指数表示(%%15.10e): %15.10e"  ,10);
   
   Print("\n");

   printf("FLT_MAXの実数表示(%%f)    : %f"     ,FLT_MAX);
   printf("FLT_MAXの実数表示(%%15.10f) : %15.10f" ,FLT_MAX);
   printf("0   の実数表示(%%15.10f) : %15.10f" ,0);

   Print("\n");

   printf("DBL_MAXの整数表示(%%d)    : %d"     ,DBL_MAX);
   printf("10   の整数表示(%%d)   : %d"      ,10);

   Print("\n");

   printf("DBL_MAXのIEEE754形式表示 %%a : %a"     ,DBL_MAX);
   printf("0.25  のIEEE754形式表示 %%a : %a"    ,0.25);
}



結果:
DBL_MAXの指数表示(%e)    : 1.797693e+308
DBL_MAXの指数表示(%.15e)   : 1.797693134862316e+308
DBL_MAXの指数表示(%15.10e)  : 1.7976931349e+308
0   の指数表示(%15.10e)  : 0.0000000000e+000
10   の指数表示(%15.10e) : 1.0000000000e+001


FLT_MAXの実数表示(%f)    : 340282346638528860000000000000000000000.000000
FLT_MAXの実数表示(%15.10f)  : 340282346638528860000000000000000000000.0000000000
0   の実数表示(%15.10f)  :    0.0000000000


DBL_MAXの整数表示(%d)       : -1
10   の整数表示(%d)      : 10


DBL_MAXのIEEE754形式表示 %a : 0x2.000000p+1023
0.25  のIEEE754形式表示 %a: 0x1.000000p-2



管理人の勝手なコメント:
フォーマット仕様はc言語のprintf関数とほぼ同じです。


スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system