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. Почему так?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Доброе время суток.
Прошу помочь с кодом. Поиском по 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.
Подскажите пожалуйста в чем проблема?