"Konstantin R. Beliaev" ... > > select cast((2674.615-300) as decimal(2,2)), > cast(2674.615 as decimal(2,2)) from rdb$database > получается 2374.61 и 2674.62 > > Куда девалась копейка? > > FB 1.5.3, Win2003
Как раз в 1.5.3 я с округлением уже боролся. Алгоритм примерно такой static const double eps_double = 1e-14; static const double eps_float = 1e-5; (long) d + 0.5 + eps, где d - double (или float) и eps = eps_double (или eps_float ) Вот этот eps я и ввёл в алгоритм, раньше его не было В данном же примере d + eps_double меньше чем 237462, на 2.9103830456734 e-011 Увеличивать eps_double рискованно, т.к. идея была в том, чтобы добавить 1 самый младший разряд в двоичном представлении double. Оно, собственно, и так несколько завышенно т.к. точность double 15 цифр -- Хорсун Влад