Во первых, удостоверьтесь, что все переменные инициализируются перед использованием (перед чтением обязательно произведено явное присваивание значения). Если это не поможет - проверяйте операции типа возведения в степень и логарифмирования. Ещё проверяйте сглаживание типа EMA.
Если вычислений много - прикидывайте допустимые диапазоны значений переменных; если значения не попадают в нужные диапазоны - выводите содержимое всех переменных в лог (или записываете в файл) и анализируете вручную.
Попробуй проводить деление вот этой функцией. Она готовит обратное число, после чего делимое умножается на это обратное число.
/*///01~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ деление с проверкой, деление заменяется умножением на обратное число /*///01~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ double ox( double x) {//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ double y=0; if(x!=0.0) y=1.0/x; else y= 1.0/MathPow(10.0,300); return(y); }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
используется так:
int start() {double a=3.0; double b=0.05; double c,d; //c=a/b; d=ox( b); c=a*d; return(0); }
Проблема решена. Дело было не в делении, я говорил, что его нет. Происходило переполнение переменной.
Всем спасибо за участие.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую.
Получаю странные числа, типа таких: -1.#INF0000, или -6015049850928292200000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000
Из-за чего они могут получатся? Прога работает с числами типа double. Выводить в лог проблематично, так как выполняются очень большие циклы, и в каком месте появляется ошибка выявить не возможно. Кто что скажет?
Подобная тема Странные числа . Но там результаты не были оглашены.