Здравствуйте migel, Вы писали:
M>На С просто: M>double Round(double val, int precision) M>{ M> double dFr ; M> // увеличиваем (уменьшаем на точность). M> val = val * pow(10, precision) ; M> // получаем значение до дес. точки. M> dFr = modf( val, &val ) ; M> // округляем по общему принципу. M> if( fabs(dFr) >= 0.5 ) M> val = val + (dFr > 0.0 ? 1.0 : -1.0 ) ; M> // возвращаем значение обратно. M> val = val * pow(10,-precision) ; M> return val ; M>} M>Вариант не самый оптимальный по скорости но для бухгалтерии сойдет...
Сейчас С под рукой нет, но я делал подобный вариант на VC6 — тоже глючит (хотя и значительно реже бейсиковых). Берусь за выходные предоставить тест, на котором эта функция глюкнет.