{{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 ?]]