{{tag>mql4 mql5 カンマ区切り}}
====== 【MQL4 / MQL5】数字をカンマ区切りの文字列にする ======
double 型の数字を受け取って、カンマ区切りの文字列にする関数。\\
参考ページのコードの ''DoubleToStr()'' を ''DoubleToString()'' に変更して MT4, MT5 両対応にした。\\
''DoubleToString()'' で文字列にした数値を整数部と小数部に分け、それぞれ ''sleft'' と ''sright'' に代入している。\\
整数部 ''sleft'' は右から 3 桁ずつ切り取ってカンマを挟んでいく。\\
最後にカンマ区切りの整数部 ''formated'' と小数部 ''sright'' を連結している。
=== コード ===
//+------------------------------------------------------------------+
//| FormatDouble |
//+------------------------------------------------------------------+
string FormatDouble(double number,
int precision,
string pcomma = ",",
string ppoint = ".")
{
string snum = DoubleToString(number, precision);
int decp = StringFind(snum, ".", 0);
string sright = StringSubstr(snum, decp + 1, precision);
string sleft = StringSubstr(snum, 0, decp);
string formated = "";
string comma = "";
while(StringLen(sleft) > 3)
{
int length = StringLen(sleft);
string part = StringSubstr(sleft, length - 3);
formated = part + comma + formated;
comma = pcomma;
sleft = StringSubstr(sleft, 0, length - 3);
}
if (sleft == "-") comma = "";
if (sleft != "") formated = sleft + comma + formated;
if (precision > 0) formated = formated + ppoint + sright;
return(formated);
}
=== 使用例 ===
Print("1234567.890 → ", FormatDouble(1234567.890, 3));
// 出力結果
// 1234567.890 → 1,234,567.890
===== 参考 =====
* [[https://www.mql5.com/en/forum/137852|How can 1000000 be formatted as 1,000,000 ?]]