Добрый день. Подскажите как выронить число с заданной кратностью при этом округлив его по математическим правилам (т.е. до 0.4 округляется в 0, от 0.5 в 1). Вряд ли понятно задал вопрос, лучше покажу примером.
Есть кратность допустим 50
и есть число 148, его надо округлить до 150
280 до 300
885 до 900
а вот 327 до 300
И так же для дробных, например при кратности 0.10
0.48 до 0.50
0.68 до 0.70
а — 0.72 до 0.70
ЗЫ. заранее извиняюсь за сумбурность вопроса.
Здравствуйте, .alex, Вы писали:
A>Есть кратность допустим 50 A>и есть число 148, его надо округлить до 150 A>280 до 300 A>885 до 900 A>а вот 327 до 300 A>И так же для дробных, например при кратности 0.10 A>0.48 до 0.50 A>0.68 до 0.70 A>а — 0.72 до 0.70
// n — округляемое число
// p — кратность
double smart_round(double n, double p)
{
return round (n / p) * p;
}
round — округляет к ближайшему целому — зависит от языка/платформы
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, .alex, Вы писали:
A>>Есть кратность допустим 50 A>>и есть число 148, его надо округлить до 150 A>>280 до 300 A>>885 до 900 A>>а вот 327 до 300 A>>И так же для дробных, например при кратности 0.10 A>>0.48 до 0.50 A>>0.68 до 0.70 A>>а — 0.72 до 0.70
Б>// n — округляемое число Б>// p — кратность Б>double smart_round(double n, double p) Б>{ Б> return round (n / p) * p; Б>}
Б>round — округляет к ближайшему целому — зависит от языка/платформы
при этом round —
double round(double n)
{
return floor(n + 0.5);
}
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, .alex, Вы писали:
A>>Есть кратность допустим 50 A>>и есть число 148, его надо округлить до 150 A>>280 до 300 A>>885 до 900 A>>а вот 327 до 300 A>>И так же для дробных, например при кратности 0.10 A>>0.48 до 0.50 A>>0.68 до 0.70 A>>а — 0.72 до 0.70
Б>// n — округляемое число Б>// p — кратность Б>double smart_round(double n, double p) Б>{ Б> return round (n / p) * p; Б>}
Б>round — округляет к ближайшему целому — зависит от языка/платформы
Спасибо. я сделал раунд так, вроде работает
int round(double n) {return (int)(n + 0.5)}
Здравствуйте, .alex, Вы писали:
A>Добрый день. Подскажите как выронить число с заданной кратностью при этом округлив его по математическим правилам (т.е. до 0.4 округляется в 0, от 0.5 в 1). Вряд ли понятно задал вопрос, лучше покажу примером. A>Есть кратность допустим 50 A>и есть число 148, его надо округлить до 150 A>280 до 300 A>885 до 900 A>а вот 327 до 300 A>И так же для дробных, например при кратности 0.10 A>0.48 до 0.50 A>0.68 до 0.70 A>а — 0.72 до 0.70 A>ЗЫ. заранее извиняюсь за сумбурность вопроса.
К вышенаписанному добавлю свои 5 копеек.
Чтобы получить точность округления — округлить десятичный логарифм числа в меньшую сторону и вычесть 1.
Затем результат потенцировать по основанию 10. Это точность округления а не его результат. То есть p в формуле round (n / p) * p. Например для 148 точность будет 10.