Ошибка при делении, что не так или это глюк?

 
//+------------------------------------------------------------------+
//|                                                          DDD.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      DDD=5;
input double   AAA=5;
double   SSS;
double   VVV;

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
      SSS = 1/DDD;
      VVV=2/AAA;
      
      Comment(SSS+"\n"+Ask+"\n"+VVV);
      Print(SSS,"    ",VVV);
  }
//+------------------------------------------------------------------+

Кто скажет почему не считает правильно?

Результат 0.0  и  2.0  вместо  0.2 и 0.4 .

Файлы:
DDD.mq4  2 kb
 
xxz:

Кто скажет почему не считает правильно?

Результат 0.0  и  2.0  вместо  0.2 и 0.4 .

потучта 1/(int) это 0 для всех кроме 1

 
Maxim Kuznetsov:

потучта 1/(int) это 0 для всех кроме 1

так я второй вариант специально сделал input double   AAA=5 .

всё равно ошибка.
 
xxz:

так я второй вариант специально сделал input double   AAA=5 .

всё равно ошибка.
      SSS = 1.0/DDD;
      VVV = 2.0/AAA;

Или

      SSS = (double)1/DDD;
      VVV = (double)2/AAA;
 
Vitaly Muzichenko:

Или

Спасибо большое!

 
Vitaly Muzichenko:

Или

Все равно, непонятно, почему 2/5.0=2 (:

 
Алексей Тарабанов:

Все равно, непонятно, почему 2/5.0=2 (:

Какая-то серьёзная ошибка. 

Результат в c++: 
SSS = 0 (всё сходится, потому что int делится на int, и раз так то и результат будет тоже int)
VVV = 0.2 (я бы ещё понял =0 в mql, как в прошлом случае. Но =2 это уже совсем не к месту)

 

Привет!

Поменял int на double и всё норм.


input double DDD=5; input double AAA=5; double SSS; double VVV; //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- SSS =1/DDD; VVV=2/AAA; Comment(SSS+"\n"+Ask+"\n"+VVV); Print(SSS," ",VVV); }

 

Откуда вы находите такие значения???

В первом случае int будет 0 и это закономерно. А во втором случае как я не старался, всё-равно получается 0.4

2018.05.11 08:40:10.390 00 EURUSD.e,H1: 0.0    0.4
Причина обращения: