Форум трейдеров » Торговые роботы, советники, индикаторы » Вопросы программирования
+ Подписаться
Страница 69 из 87 ПерваяПервая ... 1959676869707179 ... ПоследняяПоследняя
  1. 405
    Комментарии
    2
    Темы
    411
    Репутация Pro
     
    Member

    2 Медалей
    Цитата Сообщение от Владимир Гербатов Посмотреть сообщение
    Если тип данных над которым выполняется преобразование Intiger то при любой математической операции подразумевается что в результате запятой уже не будет, и соответственно не важно какому типу данных будет присвоен этот результат.

    Примеры:
    Делимое int, делитель любой тип частное int
    Делимое double, делитель любой тип частное double

    Но в то же время, наличие типа int в операции не означает полное отстутсвие запятой в результате, важную роль играет в каком месте находится операнд в выражении, например если делимое double а делитель int, то частное будет с запятой, так как преобразование было выполнено над типом double.
    Вы ошибаетесь. Если в выражении участвуют переменные или константы разных типов, то сначала вызывается неявное преобразование обоих операндов в старший тип, затем вычисляется результат. От порядка это не зависит.
    30/100=0
    30.0/100=0.3
    30/100.0=0.3

    Денису: Целочисленное деление, когда обе переменные целые, обязано дать целый результат, независимо от того, что вы с ним дальше будете делать. Это ни в коем случае не глюк, а стандартная машинная арифметика.
  2. 1,279
    Комментарии
    15
    Темы
    1292
    Репутация Pro
    Аватар для Sevrer  
    Мастер форумных наук

    5 Медалей
    Это даже не в MQL, это гораздо раньше. В С такая же ботва.
    в примере:

    int tr = 32;
    double ret = tr / 100;

    в последней строке оба значения, над которыми производится операция являются типом int.
    В целочисленном выражении 32/100 = 0, и только потом результат приводится к типу double.
    Но вот если во второй строке написать следующее:

    double ret = 1.0 * tr / 100;

    то результатом будет верный ответ. Т.к. 1.0 явно указано, что это double, и т.к. он стоит первым, все остальные автоматически были приведены к этому же типу.

    А вообще вот из хелпа
    Перед выполнением операций (кроме операций присваивания) происходит преобразование в тип, имеющий наибольший приоритет, а перед операциями присваивания - в целевой тип.

    Примеры:

    int i = 1 / 2; // приведения типов нет, результат: 0
    int i = 1 / 2.0; // выражение приводится к типу double, затем приводится к целевому типу int, результат: 0
    double d = 1.0 / 2.0; // приведения типов нет, результат: 0.5
    double d = 1 / 2.0; // выражение приводится к типу double, который совпадает с целевым типом, результат: 0.5
    double d = 1 / 2; // выражение типа int приводится к целевому типу double, результат: 0.0
    string s = 1.0 / 8; // выражение приводится к типу double, затем приводится к целевому типу string, результат: "0.12500000" (строка, содержащая 10 символов)
    string s = NULL; // константа типа int приводится к целевому типу string, результат: "0" (строка, содержащая один символ)
    string s = "Ticket #"+12345; // выражение приводится к типу string, который совпадает с целевым типом, результат: "Ticket #12345"
  3. 1,321
    Комментарии
    7
    Темы
    1547
    Репутация Pro
    Аватар для Владимир Гербатов  
    Мастер форумных наук

    5 Медалей
    Ну это на первый взгляд кажется замороченным, если долго работать именно в области математических расчетов, к этому быстро привыкаешь.
    На самом деле это не глюк, это вполне правильная реализация взаимодействия разности типа данных, которое применимо почти в любом языке програмирования, не только в MQL.

    А раньше не сталкивался видимо по другим причинам, просто не возникали такие арифметические ситуации.:)
  4. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от Владимир Гербатов Посмотреть сообщение
    Ну это на первый взгляд кажется замороченным, если долго работать именно в области математических расчетов, к этому быстро привыкаешь.
    На самом деле это не глюк, это вполне правильная реализация взаимодействия разности типа данных, которое применимо почти в любом языке програмирования, не только в MQL.

    А раньше не сталкивался видимо по другим причинам, просто не возникали такие арифметические ситуации.:)
    Я больше с PHP и JS работал, а там нет разделения переменных на целые и дробные...
  5. 6,556
    Комментарии
    18
    Темы
    6883
    Репутация Pro
    Аватар для greych  
    Старожил

    7 Медалей
    Цитата Сообщение от Sevrer Посмотреть сообщение
    Это даже не в MQL, это гораздо раньше. В С такая же ботва.
    ...
    А вообще вот из хелпа
    Си давненько изучал, но на стадии ознакомления, все остальное по мере необходимости и запоминая некоторые моменты из практики. А хэлп действительно полезен, сенкс.:bow:
    зы. "глюк" образно естественно, как аналог "фича"
  6. 415
    Комментарии
    0
    Темы
    422
    Репутация Pro
    Аватар для fsvr  
    В начале пути

    3 Медалей
    Уважаемые программисты! Помогите добрым советом или добрым делом:baby:

    Имеется индикатор MTF A(wesome) O(scilator) - рисует на тек. графике АО с заданного ТФ (в прикреплении). Что там не так? Рисует всё одним цветом:unsure: А хотелось бы цвета оригинала
    Вложения Вложения
  7. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от fsvr Посмотреть сообщение
    Уважаемые программисты! Помогите добрым советом или добрым делом:baby:

    Имеется индикатор MTF A(wesome) O(scilator) - рисует на тек. графике АО с заданного ТФ (в прикреплении). Что там не так? Рисует всё одним цветом:unsure: А хотелось бы цвета оригинала
    Я когда-то выкладывал вот такой индикатор АО, там не выбираешь таймфрейм, а указываешь множитель текущего, т.е. если вы его ставите на М15 и указываете множитель 4, то он вам отобразит АО масштаба Н1.
    http://www.procapital.ru/attachment....6&d=1241418293
  8. 415
    Комментарии
    0
    Темы
    422
    Репутация Pro
    Аватар для fsvr  
    В начале пути

    3 Медалей
    Цитата Сообщение от Денис Давыдов Посмотреть сообщение
    Я когда-то выкладывал вот такой индикатор АО, там не выбираешь таймфрейм, а указываешь множитель текущего, т.е. если вы его ставите на М15 и указываете множитель 4, то он вам отобразит АО масштаба Н1.
    http://www.procapital.ru/attachment....6&d=1241418293
    Отлично!:thumbsup_002: Рассыпаюсь в благодарностях:bow:

    P.S. А для MT5 такого у Вас нет? :unsure:
  9. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от fsvr Посмотреть сообщение
    Отлично!:thumbsup_002: Рассыпаюсь в благодарностях:bow:

    P.S. А для MT5 такого у Вас нет? :unsure:
    Нет, не делал, я этот 2 года назад написал, тогда ещё не было MT5 :D
  10. 415
    Комментарии
    0
    Темы
    422
    Репутация Pro
    Аватар для fsvr  
    В начале пути

    3 Медалей
    Цитата Сообщение от Денис Давыдов Посмотреть сообщение
    Нет, не делал, я этот 2 года назад написал, тогда ещё не было MT5 :D
    Понятно. Ну, да ладно. Денис, а всё-таки гляньте, пожалуйста, в мой индюк, что же там не так? если, конечно, не в лом:)

Вверх
РегистрацияX

чтобы писать, читать, комментировать