Скачать MetaTrader 5

Деление целых

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересуешься социальным трейдингом? Прочти соответствующую статью!
Forex Trader
114257
Forex Trader 2009.03.22 16:48 

Убил сегодня кучу времени, пока понял,
почему не работает одна из, казалось бы,
простых функций.


Упрощено:


// ...
fdPercent(10);
fdPercent2(10);
// ...


double fdPercent(int nPercent)
{ double dResult;
dResult = 1+nPercent/100;
Print("dResult = "+DoubleToStr(dResult,2));
return(dResult);
}

double fdPercent2(double nPercent)
{ double dResult;
dResult = 1+nPercent/100;
Print("dResult2 = "+DoubleToStr(dResult,2));
return(dResult);
}


На выходе:
dResult = 1.00
dResult2 = 1.10

Объясните, ну почему результат деления целого числа на целое это снова целое?
И где такое описано в документации??

Forex Trader
114257
Forex Trader 2009.03.22 19:42  
На форуме реализован хороший механизм поиска. Сделайте запрос со словами деление целых и получите ответ.
Forex Trader
114257
Forex Trader 2009.03.23 10:46  
Rosh :
На форуме реализован хороший механизм поиска. Сделайте запрос со словами деление целых и получите ответ.

В данном случае, когда я искал в чем проблема, даже предположить не мог, что это проблема деления целых.

Да, постфактум найти можно. Но я полностью согласен с NEO, что совершенно логично сохранять дробную часть при присвоении результата переменной типа double.

И все же скажите, где об этой особенности написано в документации на MT4?

Неужели пользователь должен к форуму обращаться?

Forex Trader
114257
Forex Trader 2009.03.23 16:24  

Раздел Приведение типов:

Примеры:

int i = 1 / 2; // приведения типов нет, результат: 0
int i = 1 / 2.0; // выражение приводится к типу double, затем приводится к целевому типу int, результат: 0
double d = 1.0 / 2.0; // приведения типов нет, результат: 0.5
double d = 1 / 2.0; // выражение приводится к типу double, который совпадает с целевым типом, результат: 0.5
double d = 1 / 2; // выражение типа int приводится к целевому типу double, результат: 0.0
string s = 1.0 / 8; // выражение приводится к типу double, затем приводится к целевому типу string,
//результат: "0.12500000" (строка, содержащая 10 символов)
string s = NULL; // константа типа int приводится к целевому типу string,
// результат: "0" (строка, содержащая один символ)
string s = "Ticket #"+12345; // выражение приводится к типу string, который совпадает с целевым типом,
//результат: "Ticket #12345"
Forex Trader
114257
Forex Trader 2009.03.23 20:18  
Rosh :

Раздел Приведение типов:

Ок! В документации есть! Был не прав.

P.S. Мануалы читают только ламеры! (c) народ :)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий