LINUX.ORG.RU

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

round(x, b) = round(x/b)*b
//при b == 10
round(x/10f)*10f
Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

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

  return (n+5)/10*10;

bormant ★★★★★
()

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

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 ★★★★★
()
Ответ на: комментарий от BRE

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

mix_mix ★★★★★
()

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

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