Re[4]: Округление
От: Smetanin Россия  
Дата: 11.10.01 05:38
Оценка:
Здравствуйте 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 — тоже глючит (хотя и значительно реже бейсиковых). Берусь за выходные предоставить тест, на котором эта функция глюкнет.
May the source be with you!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.