Я хочу округлить число (вверх или вниз) во введенном интервале с центром в районе 100 (не совсем по кратным внутренней длине). Вот несколько примеров:
Пример 1: Длина = 3, Центр = 100, Вход = 99.76, Округление вниз = Истина => Дискретный интервал равен [..., 97, 100, 103, ... ] и Выход = 97.
Пример 2: Длина = 4, Центр = 100, Вход = 95,5, Округление вниз = Ложь => Дискретный интервал равен [..., 96, 100, 104 ,. ..] и Выход = 96
Пример 3: Длина = 6, Центр = 100, Вход = 101,1, Округление вниз = Ложь => Дискретный интервал равен [..., 94, 100, 106,...] и Output = 106
У меня есть идея сгенерировать интервал, а затем перебрать, используя цикл и найти первое значение.
Как бы я это сделал в C #?
То, что я пробовал:
Result = Length* (int) Math.Ceiling(Input / Length)
Проблема в том, что это смотрит на кратные длины, но не центрирует их на 100.
Я думаю, что мне нужно что-то вроде этого, но оно должно обрабатывать все случаи чисел:
Result = Center + Length* (int) Math.Ceiling(Math.Abs(Center -Input) / Length)
Это, кажется, работает для чисел, больших, чем Center, но не работает в других случаях.
РЕДАКТИРОВАТЬ: Я думаю, что это работает во всех случаях:
Result = Center + Length* (int) Math.Ceiling((Input - Center) / Length)