Округлите в большую сторону рубиновое плавание или вниз к ближайшим 0.05

Буфер является временным заполнителем (переменные на многих языках программирования) в памяти (поршень/диск), на котором могут быть выведены данные, и затем обработка может быть сделана.

существует много преимуществ Буферизации как он, позволяет вещам произойти параллельно, улучшить производительность IO, и т.д.

Это также имеет многих оборотная сторона если не используемый правильно как переполнение буфера, недостаточное наполнение буфера, и т.д.

Пример C Символьного буфера.

символ *buffer1 = calloc (5, sizeof (символ));

символ *buffer2 = calloc (15, sizeof (символ));

25
задан Andrew Marshall 18 November 2012 в 04:11
поделиться

3 ответа

Проверьте эту ссылку, я думаю, это то, что вам нужно. Ruby rounding

class Float
  def round_to(x)
    (self * 10**x).round.to_f / 10**x
  end

  def ceil_to(x)
    (self * 10**x).ceil.to_f / 10**x
  end

  def floor_to(x)
    (self * 10**x).floor.to_f / 10**x
  end
end
20
ответ дан 28 November 2019 в 17:48
поделиться
[2.36363636363636, 4.567563, 1.23456646544846, 10.5857447736].map do |x|
  (x*20).round / 20.0
end
#=> [2.35, 4.55, 1.25, 10.6]
21
ответ дан 28 November 2019 в 17:48
поделиться

В общем алгоритм для «округления до ближайшего x »:

round(x / precision)) * precision

Иногда лучше умножить на 1 / точность , потому что это является целым числом (и поэтому он работает немного быстрее):

round(x * (1 / precision)) / (1 / precision)

В вашем случае это будет:

round(x * (1 / 0.05)) / (1 / 0.05)

, которое будет оцениваться как:

round(x * 20) / 20;

Я не знаю никакого Python, поэтому синтаксис может быть не таким правильно, но я уверен, что вы сможете это понять.

18
ответ дан 28 November 2019 в 17:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: