Ребят, как в С++ округлить число (double) с заданной точность? Причём точность задана не в количестве знаков после запятой, а как вещественное число.
т.е. точность может быть:
0.1
0.25
0.5
0.01
и др.
Ребят, как в С++ округлить число (double) с заданной точность? Причём точность задана не в количестве знаков после запятой, а как вещественное число.
т.е. точность может быть:
0.1
0.25
0.5
0.01
и др.
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
10 ноября 2009 в 20:03
Что-то вроде:
double round( double val, double prec)
{
int sign = (val > 0) ? 1 : -1;
val *= sign;
return ((long long)((val/prec) + 0.5))*prec*sign;
}
10 ноября 2009 в 20:04
Даже лучше так:
inline
double round( double val, double prec)
{
return ((long long)((val/prec) + ((val > 0) ? 0.5 : -0.5)))*prec;
}
10 ноября 2009 в 20:04
Пашка ت Джиоев, спасибо большое.
10 ноября 2009 в 20:04
а чем эти две функции отличаются?
10 ноября 2009 в 21:00
В первой два лишних умножения, и одно преобразование int->double. Т.е. вторая быстрее, и скорее всего заинлайнится к тому же. А результат одинаковый у них.
10 ноября 2009 в 21:01
Пасибо.
10 декабря 2019 в 21:57
toddler and child sun hats…
new era mens nfl on field sport knit beanie houston texanswhite swim hat for babies and toddlers with sun protection gender neutralbarbour beacon mens gully navy waterproof bucket hatfashion toddler newborn baby kids boy striped beret hat peaked cabbie…