Не правильно работает NormalizeDouble, как исправитЬ?

 
Добрый день, не могу понять почему не правильно работает NormalizeDouble,
в коде я хочу получить чтобы числа были вида: 0,77 (до 2 знаков после запятой)
вроде как работает, но когда цена меняется число может быть такого вида: 0,769999999999 и потом тут же меняется на 0,77 (это просто пример)
Что не так?
Спасибо

В общем есть код:

      PutLabel("Buy Profit","Buy Profit: "+string(NormalizeDouble(AllProfit(0),2)),120,80);
      PutLabel("Sell Profit","Sell Profit: "+string(NormalizeDouble(AllProfit(0),2)),100,100);

------------------------------
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==0 && (ot==0 || ot==-1))
           {
            pr+=OrderProfit()+OrderCommission()+OrderSwap();
           }

         if(OrderType()==1 && (ot==1 || ot==-1))
           {
            pr+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return(pr);
  }
 

NormalizeDouble округляет число в памяти, а данные в памяти хранятся в двоичном представлении, в котором нет числа 0.77. Есть только приближенное значение. Для отображения числа с требуемой точностью используйте DoubleToString,а  не приведение к string.

Вообще, на мой взгляд, приведение числа к string (а не преобразование), плохая практика, приводящая к таким вот недоразумениям.

 
Ihor Herasko:

NormalizeDouble округляет число в памяти, а данные в памяти хранятся в двоичном представлении, в котором нет числа 0.77. Есть только приближенное значение. Для отображения числа с требуемой точностью используйте DoubleToString,а  не приведение к string.

Вообще, на мой взгляд, приведение числа к string (а не преобразование), плохая практика, приводящая к таким вот недоразумениям.

Спасибо, опять выручили

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