Проблема с оператором деления

 
Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.
 
Maria Baburina:
Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.

В Вашем примере и число 10 и число 100 - целые. А вот если пропишем так:

10.0/100

то получится нужный результат 0.01.

 

Вот пример скрипта:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int  intA=10/100;
   double doubleB=10.0/100;
   Print("intA ",intA,", doubleB ",doubleB);
  }
//+------------------------------------------------------------------+
 
Поняла, спасибо!
 

Или даже так: обе переменные имеют тип double, но одинаковая операция возвращает разный результат:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double doubleA=10/100;
   double doubleB=10.0/100;
   Print("doubleA ",doubleA,", doubleB ",doubleB);
  }
//+------------------------------------------------------------------+


Результат:

doubleA 0.0, doubleB 0.1
 
Maria Baburina:
Поняла, спасибо!

Это все из-за бухла) 

 

 
Maria Baburina:
Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.

Чтобы не путаться пишите так:

double a_a = 10;
double b_b = 100;
double res = a_a/b_b;
Причина обращения: