Links

Сравнивать две 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 //////////////////////////////////////////////// ТО ЕСТЬ, почему-то возникает проблема, когда происходит вычитание и сложение десятичных дробей - после этого две переменные неправильно сравниваются