Проблема с возвращаемыми значениями функций аккуанта.

Образцы, куски исходников, вопросы. Обсуждаем программирование.
Ответить
Сообщение
Автор
Samovar
Сообщения: 2
Зарегистрирован: Пт авг 10, 2012 11:09 am

Проблема с возвращаемыми значениями функций аккуанта.

#1 Сообщение Samovar » Пт авг 10, 2012 12:01 pm

Здравствуйте. Столкнулся с такой проблемой: при проверке условия равенства определённого значения, значению возвращаемого функциями аккуанта. Условие не выполняется т.к. функции возвращают дробные значения:

Код: Выделить всё

EXPORT void __stdcall GetSingleTick() 
{ 
if (AccountProfit() == 6)
{
...
}
sprintf(buff, "Аккаунт профит %.20f", AccountProfit());
Print(buff);
}
В окне: "Открытые позиции" FT2 показывает что прибыль равна: 6,
но функция AccountProfit () возвращает: 6,000000089406967200
Условие - не выполняется. ( И так же с другими функциями: В окне эквити равна 9994, AccountEquity() возвращает: 9993,999999910593
При изменении баланса в его дробной части так же появляются непонятные цифры: до: 1000, после 1005,00008954100 и т.д.

В чём может быть причина? Что может влиять на эти цифры.
Заранее спасибо за ответы.

FT Support
Сообщения: 329
Зарегистрирован: Сб июл 11, 2009 3:59 pm

#2 Сообщение FT Support » Пт авг 10, 2012 4:50 pm

Здравствуйте,

Такая проблема возникает практически в любом языке программирования при использовании чисел с плавающей запятой т.к. точность этих чисел ограничена. Пожалуйста округляйте дробные значения при любом сравнении

Samovar
Сообщения: 2
Зарегистрирован: Пт авг 10, 2012 11:09 am

#3 Сообщение Samovar » Пт авг 10, 2012 5:17 pm

Понятно. Спасибо.

Ответить