Russian Qt Forum

Программирование => Алгоритмы => Тема начата: daimon от Ноябрь 18, 2009, 01:11



Название: Округление double
Отправлено: daimon от Ноябрь 18, 2009, 01:11
Может посоветовать функцию STL для округления числа типа double с заданной точностью.


Название: Re: Округление double
Отправлено: vregess от Ноябрь 18, 2009, 11:08
Посмотри тут: http://www.cplusplus.com/forum/articles/3638/ (http://www.cplusplus.com/forum/articles/3638/)

Может поможет.

PS. В STL таких функций нет вроде.


Название: Re: Округление double
Отправлено: ax от Ноябрь 18, 2009, 11:35
для double пользую ф-ию

Код:
#include <math.h>
double roundDouble(double doValue, int nPrecision)
{
    static const double doBase = 10.0;
    double doComplete5, doComplete5i;

    doComplete5 = doValue * pow(doBase, (double) (nPrecision + 1));

    if (doValue < 0.0)
        doComplete5 -= 5.0;
    else
        doComplete5 += 5.0;

    doComplete5 /= doBase;
    modf(doComplete5, &doComplete5i);

    return doComplete5i / pow(doBase, (double) nPrecision);
}


Название: Re: Округление double
Отправлено: simark1979 от Март 13, 2010, 00:34
Спасибо, попробую!


Название: Re: Округление double
Отправлено: Astrologer от Сентябрь 17, 2010, 21:51
Если привязка к сетке с заданной точностью, то
Код:
double roundTo(double value, double base)
{
return floor((value + base / 2) / base) * base;
}