Ничего не помогает, деление на ноль.

 

Что я только не делал уже 5% кода это проверка данных на не нулевое значение. Но ничего не помогает. Вот вроде не должно быть zero divide, но в этой строке хоть как дает деление на ноль.

 zero divide in (782,29)



   if(pixPerBar!=0 || txtSize[0]!=0)
     {
      barShift=txtSize[0]/2/pixPerBar+1;
     }
 
BillionerClub:

Что я только не делал уже 5% кода это проверка данных на не нулевое значение. Но ничего не помогает. Вот вроде не должно быть zero divide, но в этой строке хоть как дает деление на ноль.

 zero divide in (782,29)



hint: для целых чисел 2/5 = 0 :-)
 
BillionerClub:

Что я только не делал уже 5% кода это проверка данных на не нулевое значение. Но ничего не помогает. Вот вроде не должно быть zero divide, но в этой строке хоть как дает деление на ноль.

 zero divide in (782,29)



Допустим, pixPerBar равно нулю, а txtSize[0] не равно нулю. Тогда условие выполняется и получаем ошибку деления на 0. Либо убрать второе условие из выражения, либо вместо ИЛИ поставить И.

 
Maxim Kuznetsov:
hint: для целых чисел 2/5 = 0 :-)

Там скобок нет. Поэтому выражение 2/pixPerBar не вычисляется. 

 
Maxim Kuznetsov:
hint: для целых чисел 2/5 = 0 :-)
Ihor Herasko:

Допустим, pixPerBar равно нулю, а txtSize[0] не равно нулю. Тогда условие выполняется и получаем ошибку деления на 0. Либо убрать второе условие из выражения, либо вместо ИЛИ поставить И.

++ вроде все по тихому работает. Первая прибыль пошла.

 
BillionerClubПервая прибыль пошла.

Значит - скоро оправдаете свой НикНейм )))

 
BillionerClub:

++ вроде все по тихому работает. Первая прибыль пошла.

Надо сначала сказать спасибо, а потом перейти к заработкам, А то снег башка попадёт - совсем мёртвый будешь )

 
Andrei Fandeev:

Значит - скоро оправдаете свой НикНейм )))

Petros Shatakhtsyan:

Надо сначала сказать спасибо, а потом перейти к заработкам, А то снег башка попадёт - совсем мёртвый будешь )

++

Спецам респект ++ карме 

 

Приветствую! Помогите разобраться с ошибкой деления на нуль "zero divide".

На ПК установлено два терминала МТ5 одной и той же версии. В обоих терминалах в работе один и тот же эксперт на одних и тех же валютных парах. Разница лишь в том, что в одном demo, в другом - real счет. Но! В одном терминале все работает без проблем, в другом - ошибка "zero divide" по адресу 526,41:

con.deltaWeight=(-1)*(at*con.mt/(sqrt(con.vt)+0.00000001));

Если я не ошибаюсь, при любом раскладе в знаменателе не должно быть нуля.

Как победить?

 

 
Aleksei Lesnikov:

Приветствую! Помогите разобраться с ошибкой деления на нуль "zero divide".

На ПК установлено два терминала МТ5 одной и той же версии. В обоих терминалах в работе один и тот же эксперт на одних и тех же валютных парах. Разница лишь в том, что в одном demo, в другом - real счет. Но! В одном терминале все работает без проблем, в другом - ошибка "zero divide" по адресу 526,41:

Если я не ошибаюсь, при любом раскладе в знаменателе не должно быть нуля.

Как победить?

 

Как минимум указать цветом (выделить), где у Вас в строке 526 место 41.

Затем:

  1. помните, что переменная передаваемая в MathSqrt должна быть положительная.
  2. всегда сначала проверять знаменатель на принадлежность в нулю и только потом принимать решение
 
Vladimir Karputov:

Как минимум указать цветом (выделить), где у Вас в строке 526 место 41.

Затем:

  1. помните, что переменная передаваемая в MathSqrt должна быть положительная.
  2. всегда сначала проверять знаменатель на принадлежность в нулю и только потом принимать решение
con.deltaWeight=(-1)*(at*con.mt/(sqrt(con.vt)+0.00000001));

Место 41 - знак деления. В знаменателе, даже если корень квадратный будет равен нулю, нуля не будет. Остается только переменная, передаваемая в MathSqrt.

Но данный эксперт без проблем работает в другом экземпляре МТ5. Почему там нет такой ошибки?

Причина обращения: