Ковыряю один советник, вижу вот такой код, мне глаза режут такие преобразования (string)times.year.
Насколько я прав или неправ?
Оба метода имеют право на жизнь. Хотя я тоже делаю через IntegerToString(). Ведь преобразование числа в строку - это фишка чисто от MQL, в C++ такого нет.
Оба метода имеют право на жизнь. Хотя я тоже делаю через IntegerToString(). Ведь преобразование числа в строку - это фишка чисто от MQL, в C++ такого нет.
Я о том же, лучше использовать документированные методы. А то черт его знает, как это (string)times.year будет работать в будущем. Хорошо помню, как в старой версии MQL4 один чел любил называть переменные с точками, например
int my.int.variable. Я ему говорил, не называй так, когда-нибудь сделают нормальный компилятор и все у тебя перестанет компилироваться. Так не слушал...потом все переделывал.
IntegerToString() - наверно, не важно. А вот DoubleToString() пытается вывести строку с ненужными иногда нулями. (string) же - выводит число "как есть".
так приводите к нужной точности
IntegerToString() - наверно, не важно. А вот DoubleToString() пытается вывести строку с ненужными иногда нулями. (string) же - выводит число "как есть".
Там же можно задавать количество знаков после запятой
string s = DoubleToString(value, _Digits);
На мой взгляд, только через IntegerToString().
Прямое преобразование - мне также "режет глазах". И я также против использования его как раз потому, что хрен его знает, как оно будет работать.
На мой взгляд, только через IntegerToString().
Прямое преобразование - мне также "режет глазах". И я также против использования его как раз потому, что хрен его знает, как оно будет работать.
Ага, называется по умному undocumented behavior - недокументированное поведение.
Более того - на мой взгляд, на выходе мы должны получать строку из символов, а вовсе не символьное представление числа.
Проверил таки )
MqlDateTime times; TimeToStruct(TimeCurrent(), times); string time = ""; string svrdate=(string)times.year+"."+(string)times.mon+"."+(string)times.day; Print(svrdate);
Печатает
2018.05.29 18:26:16.553 EnumTF (EURUSD,M1) 2018.5.29
Ага, называется по умному undocumented behavior - недокументированное поведение.
Очень даже документированное: https://www.mql5.com/ru/docs/basis/types/casting
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ковыряю один советник, вижу вот такой код, мне глаза режут такие преобразования (string)times.year.
Насколько я прав или неправ?