singlepost

С++ округление с заданной точностью << На главную или назад  

Ребят, как в С++ округлить число (double) с заданной точность? Причём точность задана не в количестве знаков после запятой, а как вещественное число.

т.е. точность может быть:
0.1
0.25
0.5
0.01

и др.

6 ответов в теме “С++ округление с заданной точностью”

  1. 1
    Пашка Джиоев ответил:

    Что-то вроде:

    double round( double val, double prec)
    {
    int sign = (val > 0) ? 1 : -1;
    val *= sign;
    return ((long long)((val/prec) + 0.5))*prec*sign;
    }

  2. 2
    Пашка Джиоев ответил:

    Даже лучше так:

    inline
    double round( double val, double prec)
    {
    return ((long long)((val/prec) + ((val > 0) ? 0.5 : -0.5)))*prec;
    }

  3. 3
    Александр Васюченко ответил:

    Пашка ت Джиоев, спасибо большое.

  4. 4
    Александр Васюченко ответил:

    а чем эти две функции отличаются?

  5. 5
    Пашка Джиоев ответил:

    В первой два лишних умножения, и одно преобразование int->double. Т.е. вторая быстрее, и скорее всего заинлайнится к тому же. А результат одинаковый у них.

  6. 6
    Александр Васюченко ответил:

    Пасибо.

Ответить

Пожалуйста, зарегистрируйтесь для комментирования.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.