Сравнивать две double нельзя
Нельзя сравнивать две double переменные.
Об этом можно посмотреть в интернете.
==================================
Здравствуйте. Столкнулся с проблемой в АПИ. Алгоритм должен проверять актуальность цены заявки и отменять её, если цена не актуальна. Вот реальный пример.
Цена активной заявки в реальном времени равна 1332.8
Если выполняется такой код, всё работает правильно - заявка не отменяется, новая не выставляется
////////////////////////////////////////////////////////////////////////////////////////////
double BuyPrice = 1332.8;
foreach (IOrder MyOrder in SymbolRt.Orders)
{
if (MyOrder.IsActive)
{
if (MyOrder.Price == BuyPrice) return; // Выход
else SymbolRt.CancelOrder(MyOrder); // Отмена заявки
}
}
//Затем проверяются условия выставления новых заявок.
if (,,,,,,,,,,,,,,,,)
{
SymbolRt.NewOrder(OrderType.Growth, true, BuyPrice, 1, "пример");
}
////////////////////////////////////////////////////////////////////////////////////////////
Если выполняется такой код, заявка ВСЕГДА отменяется, а затем выставляется ТОЧНО такая же с той же ценой
////////////////////////////////////////////////////////////////////////////////////////////
double BuyPrice = 1332.9 - 0.1;
foreach (IOrder MyOrder in SymbolRt.Orders)
{
if (MyOrder.IsActive)
{
if (MyOrder.Price == BuyPrice) return; // Выход
else SymbolRt.CancelOrder(MyOrder); // Отмена заявки
}
}
//Затем проверяются условия выставления новых заявок.
if (,,,,,,,,,,,,,,,,)
{
SymbolRt.NewOrder(OrderType.Growth, true, BuyPrice, 1, "пример");
}
////////////////////////////////////////////////////////////////////////////////////////////
При этом, если переменную сделать таким образом, то всё работает правильно
/////////////////////////////////////////////////
double BuyPrice = (1332.9 * 10 - 1) / 10
////////////////////////////////////////////////
ТО ЕСТЬ, почему-то возникает проблема, когда происходит вычитание и сложение десятичных дробей - после этого две переменные неправильно сравниваются