我想在以 100 为中心的输入间隔中舍入一个数字(向上或向下)(不完全是内部长度的倍数)。这里有些例子:
例 1:长度 = 3,中心 = 100,输入 = 99.76,向下取整 = True => 离散区间为 [..., 97, 100, 103,...] 并且输出 = 97。
Ex 2: Length=4, Center=100, Input=95.5, Round Down=False => 离散区间为 [..., 96, 100, 104,...] 和 Output=96
Ex 3: Length=6, Center=100, Input=101.1, Round Down=False => 离散区间为 [..., 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)