инт отбрасывает дробную часть. у вас в стеке получается лежит 49,9999999999 отсюда и 49 =) нормализуйте числа
спасибо за ответ. нормализовал "temp" и ... заработало
не подскажите почему это происходит? в данном примере есть простое вычитание, нет операций деления которые могут давать такого рода приближения.
ведь не всегда знаешь где нормализовать а где нет. раньше думал, что только в вызове торговых функций ...
спасибо за ответ. нормализовал "temp" и ... заработало
не подскажите почему это происходит? в данном примере есть простое вычитание, нет операций деления которые могут давать такого рода приближения.
ведь не всегда знаешь где нормализовать а где нет. раньше думал, что только в вызове торговых функций ...
счтайте все в даблах. Пока не поймете где можно для быстроты и в интах считать. Будите считать все в даблах все будет точно всега.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
этот небольшой скрипт:
//###############################################
int start()
{
double temp = 1.39963 - 1.39913;
int pow = MathPow(10,5);
int result = temp * pow ;
Alert( DoubleToStr(temp,5), " * ", pow, " = ", result );
return(0);
}
//###############################################
выдает ошибочный результат ( 49 вместо 50 )
если поменять тип переменной "result" на "double", то ошибки не будет
в чем тут проблема?