double zz=(5/15);

 
double zz=(5/15); Print((MathCeil(zz))," , ",(DoubleToStr(zz,4)));



Почему результат: 0 , 0.0000 ?????? Должно быть: 1 , 0,3333
 
писать так надо

double zz=(5.0/15.0);
 
Ronen:
писать так надо

double zz=(5.0/15.0);
спасибо

Но а если так

int a=5,b=15; double zz; zz=(a/b); Print((MathCeil(zz))," ",(DoubleToStr(zz,4)));


Почему результат: 0 , 0.0000 ?????? Должно быть: 1 , 0,3333
 
Потому что в MQL нету casting (это когда (double) пишешь перед выражением и оно в дабл и считается) как в Си или Джава,
поэтому чтоб копутер понял что надо в дабл считать,добавь ченить вроде zz=(1.0*a/b);

вот такие вот заморочки :)))
 
Ronen:
Потому что в MQL нету casting (это когда (double) пишешь перед выражением и оно в дабл и считается) как в Си или Джава,
поэтому чтоб копутер понял что надо в дабл считать,добавь ченить вроде zz=(1.0*a/b);

вот такие вот заморочки :)))
Спасибо но я решил эту проблему так:
int a=5,b=15; double zz; zz=NormalizeDouble(a,2)/NormalizeDouble(b,2)
 
Так корректнее и быстрее: double zz=5.0/15.0;

А double zz=5/15; равно 0 и так и должно быть. Ведь сначала одно целое число делится на другое целое число, получается 0, а затем целочисленный ноль приводится к double.
 
Renat:
Так корректнее и быстрее: double zz=5.0/15.0;

А double zz=5/15; равно 0 и так и должно быть. Ведь сначала одно целое число делится на другое целое число, получается 0, а затем целочисленный ноль приводится к double.
Наверняка, введение операции "деления" по стандарту СС++ заняло бы меньше времени, чем объяснения. Который раз уже программисты на "грабли" наступают то. Правда, пришлось бы вводить еще пару операций: "деление нацело" и "остаток от деления нацело".

Удачи и попутных трендов.
 
VladislavVG:
Renat:
Так корректнее и быстрее: double zz=5.0/15.0;

А double zz=5/15; равно 0 и так и должно быть. Ведь сначала одно целое число делится на другое целое число, получается 0, а затем целочисленный ноль приводится к double.
Наверняка, введение операции "деления" по стандарту СС++ заняло бы меньше времени, чем объяснения. Который раз уже программисты на "грабли" наступают то. Правда, пришлось бы вводить еще пару операций: "деление нацело" и "остаток от деления нацело".

Удачи и попутных трендов.
Вы наверное удивитесь, написав "double zz=5/15;" в C/C++ и также получив 0 :-)
Причина обращения: