Чтобы округлить x
до ближайшего значения c * 10^n
, используйте
f(c) = c * 10^(floor(log(x/c)))
(при условии x
положительно). Чтобы округлить до ближайшего из них, просто найдите
max(f(1), f(2), f(5))
Чтобы округлить x
до ближайшего значения c * 10^n
, используйте
g(c) = c * 10^(ceiling(log(x/c)))
(снова при условии, что x
положительно). Чтобы округлить до ближайшего из них, просто найдите
min(g(1), g(2), g(5))
Теперь, чтобы просто округлить до ближайшего из этих значений, найдите ближайшее округление вниз (первый абзац) и ближайшее округление вверх (второй абзац) и выберите тот, который ближе к x
.