![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот так всегда 7:
Вот так всегда 7:
Вопрос в том почему не работает первый вариант из первого поста:
1 вариант.
int start()
{
int delta;
delta=(1.0548-1.0541)/Point;
Comment(delta);
return(0);
}
Результат:delta = 6.
А должно быть 7
меня волнует внутренний принцип по которому
происходят вычисления в 1 варианте и получается 6, а не 7.
Кроме того по правилам приведения типов у меня должно быть 7.Вопрос в том почему не работает первый вариант из первого поста:
1 вариант.
int start()
{
int delta;
delta=(1.0548-1.0541)/Point;
Comment(delta);
return(0);
}
Результат:delta = 6.
А должно быть 7
Потому, что число 0.0007 не может быть точно представлено двоичным кодом. Получается 0.000699999999999. При приведении типов от дабл к инт дробная часть просто отбрасывается. Потому и получается 6.
При нормализации разности Вы получите что-то типа 0.0007000000000001. Дальше аналогично.
При округлении обычно работает правило +0.5 и отбрасывание дробной части - потому тоже получается 7.
Вопрос в том почему не работает первый вариант из первого поста:
1 вариант.
int start()
{
int delta;
delta=(1.0548-1.0541)/Point;
Comment(delta);
return(0);
}
Результат:delta = 6.
А должно быть 7
Особенности хранения и вычисления действительных чисел в компьютере. Это мат. процессор, а не MQL
Кажется, понял почему так.
Здесь нет мусора -> (1.0548-1.0541). Мусор появляется после деления.
Когда происходит деление на число меньше единицы, то это аналогично умножению. Т.е. значимая часть числа сдвигается влево и тянет за собой мусор в новых разрядах справа.
Кажется, понял почему так.
Здесь нет мусора -> (1.0548-1.0541). Мусор появляется после деления.
Когда происходит деление на число меньше единицы, то это аналогично умножению. Т.е. значимая часть числа сдвигается влево и тянет за собой мусор.
посмотрите в студии эта разница не равна 0.0007.
посмотрите в студии эта разница не равна 0.0007.
И правда!
Константа чистая. Результат не очень.
Если сделать так
то получим