"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 цифр
--
Хорсун Влад