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

 

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

 

StringLen

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

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

Параметры

string_value

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

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

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

 

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

StringLen(1.3450); 

 

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

 
Vasyl Nosal:

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

StringLen(1.3450); 

 

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

StringLen((string)(1.3450)); 

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

 
Vasyl Nosal:

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

StringLen(1.3450); 

 

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

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

StringLen((string)(1.3450)); 

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

обрезает 0
 
coderex:
число, переданное в качестве параметра в функцию StringLen неявно приводится к типу string, в связи с чем последний нолик отбрасывается. Передайте в функцию именно строку и увидите правильное значение.
А где мне взять именно строку?
 
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
 
Это... это не тот ноль. Это спецсимвол \0. Под строку может быть выделено памяти больше чем строка, поэтому конец строки обозначается элементом со значением 0. Но это не в нашем ведении. Зря вообще в справке про этот ноль написано. Смысл в том, что в памяти строка занимает, как минимум, на один символ больше, но нас это не колышит никаким образом.  
 
Сначала бы попробовать надо, а не фантазировать. StringLen("1.3450") = 6
 
Anatoli Kazharski:

Результат:

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

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

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