Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.
- Добро пожаловать в алготрейдинг
- Отладка кода - Разработка программ
- Подключение к счету - Счета - MetaTrader 5 для Android
Maria Baburina:
Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.
Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.
В Вашем примере и число 10 и число 100 - целые. А вот если пропишем так:
10.0/100
то получится нужный результат 0.01.
Вот пример скрипта:
//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2015, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int intA=10/100; double doubleB=10.0/100; Print("intA ",intA,", doubleB ",doubleB); } //+------------------------------------------------------------------+
Поняла, спасибо!
Или даже так: обе переменные имеют тип double, но одинаковая операция возвращает разный результат:
//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2015, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double doubleA=10/100; double doubleB=10.0/100; Print("doubleA ",doubleA,", doubleB ",doubleB); } //+------------------------------------------------------------------+
Результат:
doubleA 0.0, doubleB 0.1
Maria Baburina:
Поняла, спасибо!
Поняла, спасибо!
Это все из-за бухла)
Maria Baburina:
Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.
Здравствуйте! Подскажите, пожалуйста, почему при вычислении выражения (10/100) советник возвращает 0. И при использовании переменных и просто при константах. Тип double, т.е. должно получиться 0.1 без проблем. Блок с этим выражением был взят из другого кода, т.е. все по идее работало.
Чтобы не путаться пишите так:
double a_a = 10; double b_b = 100; double res = a_a/b_b;
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь