PrintFormat
Форматирует и печатает наборы символов и значений в журнал экспертов в соответствии с заданным форматом.
void PrintFormat(
string format_string,
...
); |
Параметры
format_string
[in] Строка формата состоит из обычных символов и, если за строкой формата следуют аргументы, еще и спецификации формата.
...
[in] Любые значения простых типов, разделенные запятыми. Общее количество параметров не может превышать 64, включая форматную строку.
Возвращаемое значение
Примечание
flags
|
|
|
– (минус)
|
Выравнивание по левому краю в пределах заданной ширины
|
Выравнивание по правому краю
|
+ (плюс)
|
Вывод знака + или - для значений знаковых типов
|
Знак выводится только если значение отрицательное
|
0 (ноль)
|
Перед выводимом значением добавляются нули в пределах заданной ширины. Если указан флаг 0 с целочисленным форматом (i, u, x, X, o, d) и задана спецификация точности (например, %04.d), то 0 игнорируется.
|
Ничего не вставляется
|
пробел
|
Перед выводимым значением ставится пробел, если значение является знаковым и положительным
|
Пробелы не вставляются
|
#
|
Если используется совместно с форматом o, x или X, то перед выводимым значением добавляется 0, 0x или 0X соответственно.
|
Ничего не вставляется
|
|
Если используется совместно с форматом e, E, a или A, то значение всегда выводится с десятичной точкой.
|
Десятичная точка выводится только если есть ненулевая дробная часть.
|
|
Если используется совместно с форматом g или G, флаг определяет наличие десятичной точки в выводимом значении и препятствует отсечению ведущих нулей.
Флаг # игнорируется при совместном использовании с форматами c, d, i, u, s.
|
Десятичная точка выводится только если есть ненулевая дробная часть. Ведущие нули отсекаются
|
width
precision
|
|
|
a, A
|
Спецификация точности указывает количество знаков после десятичной точки
|
Точность по умолчанию – 6.
|
c, C
|
Не применяется
|
|
d, i, u, o, x, X
|
Указывает минимальное число выводимых цифр. Если количество цифр в соответствующем параметре меньше указанной точности, то выводимое значение дополняется слева нулями. Выводимое значение не обрезается, если количество выводимых цифр больше указанной точности
|
Точность по умолчанию – 1.
|
e, E, f
|
Указывает число выводимых цифр после десятичной точки. Последняя выводимая цифра округляется
|
Точность по умолчанию – 6. Если указана точность 0 или дробная часть отсутствует, то десятичная точка не выводится.
|
g, G
|
Указывает максимальное число значимых цифр
|
Выводится 6 значимых цифр.
|
s, S
|
Указывает количество выводимых символов строки. Если длина строки превышает значение точности, то строка усекается на выводе
|
Выводится вся строка
|
h | l | ll | I32 | I64
|
|
|
int
|
l (маленькая L)
|
d, i, o, x, or X
|
uint
|
l (маленькая L)
|
o, u, x, or X
|
long
|
ll (две маленькие L)
|
d, i, o, x, or X
|
short
|
h
|
d, i, o, x, or X
|
ushort
|
h
|
o, u, x, or X
|
int
|
I32
|
d, i, o, x, or X
|
uint
|
I32
|
o, u, x, or X
|
long
|
I64
|
d, i, o, x, or X
|
ulong
|
I64
|
o, u, x, or X
|
type
Спецификатор типа является единственным обязательным полем для форматированного вывода.
|
|
|
c
|
int
|
Символ типа short (Unicode)
|
C
|
int
|
Символ типа char (ANSI)
|
d
|
int
|
Знаковое десятичное целое
|
i
|
int
|
Знаковое десятичное целое
|
o
|
int
|
Беззнаковое восьмеричное целое
|
u
|
int
|
Беззнаковое десятичное целое
|
x
|
int
|
Беззнаковое шестнадцатиричное целое с использованием "abcdef"
|
X
|
int
|
Беззнаковое шестнадцатиричное целое с использованием "ABCDEF"
|
e
|
double
|
Вещественное значение в формате [ – ]d.dddd e [sign]ddd, где d – одна десятичная цифра, dddd – одна или больше десятичных цифр, ddd – трехзначное число, определяющее размер экспоненты, sign – знак плюс или минус
|
E
|
double
|
Идентично формату e, за исключением того, что знак экспоненты вывоится большой буквой (E вместо e)
|
f
|
double
|
Вещественное значение в формате [ – ]dddd.dddd, где dddd – одна или больше десятичных цифр. Количество выводимых знаков перед десятичной точкой зависит от величины значения числа. Количество знаков после десятичной точки зависит от требуемой точности.
|
g
|
double
|
Вещественное значение, выводимое в формате f или e, в зависимости от того какой вывод будет компактнее.
|
G
|
double
|
Вещественное значение, выводимое в формате f или E, в зависимости от того какой вывод будет компактнее.
|
a
|
double
|
Вещественное значение в формате [−]0xh.hhhh p±dd, где h.hhhh – мантисса в виде шестнадцатиричных цифр с использованием "abcdef", dd – одна или более цифр экспоненты. Количество знаков после запятой определяется спецификацией точности
|
A
|
double
|
Вещественное значение в формате [−]0xh.hhhh P±dd, где h.hhhh – мантисса в виде шестнадцатиричных цифр с использованием "ABCDEF", dd – одна или более цифр экспоненты. Количество знаков после запятой определяется спецификацией точности
|
s
|
string
|
Вывод строки
|
Пример:
void OnStart()
{
//--- имя торгового сервера
string server=AccountInfoString(ACCOUNT_SERVER);
//--- номер торговго счета
int login=(int)AccountInfoInteger(ACCOUNT_LOGIN);
//--- вывод значения long
long leverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
PrintFormat("%s %d: плечо = 1:%I64d",
server,login,leverage);
//--- валюта депозита
string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- вывод значения double с 2 цифрами после десятичной точки
double equity=AccountInfoDouble(ACCOUNT_EQUITY);
PrintFormat("%s %d: размер собственных средств на счете = %.2f %s",
server,login,equity,currency);
//--- вывод значения double с обязательным выводом знака +/-
double profit=AccountInfoDouble(ACCOUNT_PROFIT);
PrintFormat("%s %d: текущий результат по открытым ордерам = %+.2f %s",
server,login,profit,currency);
//--- вывод значения double с переменным количеством цифр после десятичной точки
double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
string format_string=StringFormat("%%s: значение одного пункта = %%.%df",_Digits);
PrintFormat(format_string,_Symbol,point_value);
//--- вывод значения int
int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
PrintFormat("%s: текущий спред в пунктах = %d ",
_Symbol,spread);
//--- вывод значения double в научном формате с плавающей запятой и точностью 17 значащих цифр
PrintFormat("DBL_MAX = %.17e",DBL_MAX);
//--- вывод значения double в научном формате с плавающей запятой и точностью 17 значащих цифр
PrintFormat("EMPTY_VALUE = %.17e",EMPTY_VALUE);
//--- вывод через PrintFormat() с точностью по умолчанию
PrintFormat("PrintFormat(EMPTY_VALUE) = %e",EMPTY_VALUE);
//--- простой вывод через Print()
Print("Print(EMPTY_VALUE) = ",EMPTY_VALUE);
/* результат выполнения
MetaQuotes-Demo 4236774: плечо = 1:100
MetaQuotes-Demo 4236774: размер собственных средств на счете = 9998.49 USD
MetaQuotes-Demo 4236774: текущий результат по открытым ордерам = -1.51 USD
EURJPY: значение одного пункта = 0.001
EURJPY: текущий спред в пунктах = 15
DBL_MAX = 1.79769313486231570e+308
EMPTY_VALUE = 2.14748364700000000e+009
PrintFormat(EMPTY_VALUE) = 2.147484e+009
Print(EMPTY_VALUE) = 2147483647
*/
} |
Смотри также
StringFormat, DoubleToString, Вещественные типы (double, float)
|