Скачать MetaTrader 5

StringLen - при чём в string "0"?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поделись программой в CodeBase. Получи доступ к миллионам трейдеров!
Vladimir Karputov
Модератор
45543
Vladimir Karputov 2016.02.25 13:47 
В эту тему были перенесены комментарии, не относящиеся к "Ошибки, баги, вопросы".
Vasyl Nosal
18536
Vasyl Nosal 2016.02.25 13:02  

 При чём здесь в стринге 0?

 

StringLen

Возвращает число символов в строке.

int StringLen(
string string_value // строка
);

Параметры

string_value

[in] Строка для вычисления длины.

Возвращаемое значение

Количество символов в строке без учета завершающего нуля. 

Vasyl Nosal
18536
Vasyl Nosal 2016.02.25 13:07  

Хочу узнать длину числа.

StringLen(1.3450); 

 

Выходит 5. Это круто. Каким образо мне получить 6? 

Vladislav Andruschenko
91628
Vladislav Andruschenko 2016.02.25 13:11  
Vasyl Nosal:

Хочу узнать длину числа.

StringLen(1.3450); 

 

Выходит 5. Это круто. Каким образо мне получить 6? 

StringLen((string)(1.3450)); 

попробуйте так 

coderex
441
coderex 2016.02.25 13:12  
Vasyl Nosal:

Хочу узнать длину числа.

StringLen(1.3450); 

 

Выходит 5. Это круто. Каким образо мне получить 6?

число, переданное в качестве параметра в функцию StringLen неявно приводится к типу string, в связи с чем последний нолик отбрасывается. Передайте в функцию именно строку и увидите правильное значение.
Vasyl Nosal
18536
Vasyl Nosal 2016.02.25 13:18  
Vladislav Andruschenko:

StringLen((string)(1.3450)); 

попробуйте так 

обрезает 0
Vasyl Nosal
18536
Vasyl Nosal 2016.02.25 13:19  
coderex:
число, переданное в качестве параметра в функцию StringLen неявно приводится к типу string, в связи с чем последний нолик отбрасывается. Передайте в функцию именно строку и увидите правильное значение.
А где мне взять именно строку?
Anatoli Kazharski
56814
Anatoli Kazharski 2016.02.25 13:48  
Vasyl Nosal:

Хочу узнать длину числа.

StringLen(1.3450); 

Выходит 5. Это круто. Каким образо мне получить 6? 

Print(StringLen(DoubleToString(1.3450,4)));

Результат:

2016.02.25 15:50:18.799 Test (EURUSD,H1)        StringLen(1.3450): 6
Dmitry Fedoseev
42877
Dmitry Fedoseev 2016.02.25 14:10  
Это... это не тот ноль. Это спецсимвол \0. Под строку может быть выделено памяти больше чем строка, поэтому конец строки обозначается элементом со значением 0. Но это не в нашем ведении. Зря вообще в справке про этот ноль написано. Смысл в том, что в памяти строка занимает, как минимум, на один символ больше, но нас это не колышит никаким образом.  
Dmitry Fedoseev
42877
Dmitry Fedoseev 2016.02.25 14:14  
Сначала бы попробовать надо, а не фантазировать. StringLen("1.3450") = 6
Vasyl Nosal
18536
Vasyl Nosal 2016.02.25 14:38  
Anatoli Kazharski:

Результат:

Откуда взять 4?

Если это цена то ладно. Digits

А если не цена? 

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий