Прошу помочь с кодом. MathFloor().

 

Доброе время суток.
Прошу помочь с кодом. Поиском по MathFloor() ответа не нашел. Есть скрипт:

int start(){
  double a=0.12; 
  double b;
   
  for (int i=0; i<2; i++){
    a*=10;
    b=MathFloor(a);
    Print("b=",DoubleToStr(b,8)); 
    a-=b;
  }
 
return(0);
}

Print() должен вывести сначала 1 потом 2. Но выводит 1 и 1.
Если a=0.13 то вывод правильный 1 и 3.
Подскажите пожалуйста в чем проблема?

 
int start(){
  double a=0.12;  
  double b;
    
  for (int i=0; i<2; i++){
    a*=10;
    a=NormalizeDouble(a,8);
    b=MathFloor(a);
    Print("b=",DoubleToStr(b,8));  
    a-=b;
  }
  
  return(0);
}

 

Спасибо за помощь и оперативность. Самой интересное, что я пробовал нормализировать, но не смог поймать ошибку. Есть ли объяснение такому поведению MathFloor() или переменной "a" после операций с ней? К примеру, из ряда чисел 0,11-0,19, если не нормализировать, то такая проблема возникает только с числами 0,12 и 0,18. Почему так?

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