LINUX.ORG.RU

«наивная», но не самая оптимальная реализация:

round(x, b) = round(x/b)*b
//при b == 10
round(x/10f)*10f
subwoofer ★★★★★ ()
Последнее исправление: subwoofer (всего исправлений: 1)
n = 998;
while (n % 10) {
    ++n;
}
return n;
anonymous ()

Округлять до ближайшего четного.

anonymous ()

Насколько понимаю, речь была про округление до десятков:

  return (n+5)/10*10;

bormant ★★★★★ ()
Ответ на: комментарий от anonymous

За такое в приличных обществах бьют томиком Кнута по башке

anonymous ()

Во-первых, что именно в твоём случае означает «округлять», какие именно операции?
Во-вторых, в зависимости от необходимости делать это быстро, существуют различные решения.
В-третьих, какие системы счисления и типы данных должны применяться? Из примеров можно догадаться, что речь идёт только о целых десятичных непонятной разрядности.

blexey ★★★★ ()

А как округлять? До чего? Десятков, сотен, тысяч, n перавых знаков и т.д.

peregrine ★★★★★ ()

Ты уж сразу выкладывай полное задание лабораторной работы.

kernelpanic ★★★★★ ()
unsigned long long my_round(unsigned long long n) {
  return 10*(n/10+(n%10>=5));
}
evilface ★★ ()
Последнее исправление: evilface (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну вообще-то он дело говорит. Если много округляемых, имеет смысл так делать, чтоб ошибка не накапливалась. Но лучше всего, конечно, округлять вверх с вероятностью дробной части.

mix_mix ★★★★★ ()
Ответ на: комментарий от mix_mix

А в каком месте у целых ошибка накапливается?

BRE ★★ ()
Ответ на: комментарий от BRE

А что, Δx обязательно меньше 1 по модулю должна быть?

mix_mix ★★★★★ ()

может сойдет: lambda x: x+5 - (x-5) % 10 (тут правда десятки куда попало, а не в четные, как принято)

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.