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