Округление числа с плавающей точкой до указанной точности.

 

Помогите разобраться почему функция работает не корректно.

Ниже приведенный код, вычисляет лот у проигрышного ордера и увеличивает в 2 раза.

Почему происходит сбой если взять лот 0.1 и когда он станет 0.8 произойдет сбой почему, при проигрыше должно 1.6 лот стать а он всё 0.8 грузит

//+--------------------------- FindLastLots ----------------------------------+
double FindLastLots()
  {
   double oldlots,profit;
   int oldticket;
   int ticket=0;
    double lots= lots1;
     int total = OrdersHistoryTotal();
    double minlot = MarketInfo(Symbol(), MODE_MINLOT);
   int round = MathAbs(MathLog(minlot) / MathLog(10.0)) + 0.5;
   
    ////////////////////////////////////////////////////////////////////////////////////////
           for (int id = 0; id < total; id++) {
   OrderSelect(id, SELECT_BY_POS, MODE_HISTORY);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) { 
           
            oldticket=OrderTicket();
            if(oldticket>ticket)
              {
              oldlots= OrderLots();
               
               profit=OrderProfit();
               if(profit<0){
               lots=oldlots*2;
               lots = DoubleToString(lots, 2);
             
               Print("НОМЕР лота  ", id, "ПРОФИТ ", profit, "Новый лот ", lots);
               }
               if(profit>0){
               lots=lots1;
               Print("НОМЕР лота  ", id, "ПРОФИТ ", profit);
               }
              
              }
           }
        }
     
   return(lots);
  }
 
Что выводят Print внутри этой функции?
 
for (int id = total-1; id >=0 ; id--)
...
...

       }
 break;

     }
   }
     
   return(lots);
 
mql5:
Что выводят Print внутри этой функции?

Меня больше всего интригует результат в следующей комбинации

...
double lots= lots1;
...
lots = DoubleToString(lots, 2);
...
 
Mislaid:

Меня больше всего интригует результат в следующей комбинации

 

А тебя не смущает, что переменной double присваивается значение string?
Причина обращения: