Страница 1 из 1

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

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

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

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 и т.д.

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

Добавлено: Пт авг 10, 2012 4:50 pm
FT Support
Здравствуйте,

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

Добавлено: Пт авг 10, 2012 5:17 pm
Samovar
Понятно. Спасибо.