Здравствуйте, venicum, Вы писали:
V>Здравствуйте, barn_czn, Вы писали:
_>>Но дело ведь не в представлении таких чисел, а преобразовании типов. _>>Создать переменную float f = 0.001f я могу, double d = 0.001 — тоже могу. Какова ж черта d != (double)f ?
V>Честно, после того когда давненько прочитал стандарты IEEE, меня такое не удивляет. V>p.s. V>В принципе при сравнении двух дробных чисел нельзя использовать явную проверку на равенство, нужно проверять V>является ли модуль разности менее какой-либо точности, определенной для данной задачи.
Про сравнение согласен, если в коде есть сравнение двух плавающих — тут явно чтото не так.
Я просто довел реальную ситуацию до абсурда, чтобы пример проще был.
А реальная проблема вот в чем. Некий метод делает вычисления на float-ах. Далее результат этого метода попадает в другой метод где уже вычисления ведутся на double, т.е. входные данные — аргумент double. А в результате такова кривого приведения получается что входные данные с ошибкой пришли.
И это мне очень не нравится. Победил пока это двойным приведением (double)(decimal)f. Костыль конечно, но работает.