这样的事情怎么样?
return Math.Ceiling(x * 4) / 4;
这是一个解释。假设您要四舍五入到最接近的整数。这很容易-正是
Math.Ceiling这样。
好的,因此我们已经有一个具有所需行为的算法。它只是有一个错误的常数。
我们可以通过“映射”我们的输入来解决此问题,将每个“四分之一”视为映射到一个整体(正确地代表0.25的倍数):
0.25 => 10.50 => 20.75 => 31.00 => 41.25 => 5
&c。,&c。
这里的映射关系很简单。要从左到右,乘以4。要从右到左,除以4。请注意,每个值> = 0.25
<0.5将映射到1到2之间的值,这是我们想要的,因为
Math.Ceiling将舍入到2在这种情况下,我们可以将其映射回0.5。
因此,从本质上讲,我们将输入映射到与已经实现的算法(
Math.Ceiling)兼容的值;然后我们将结果映射回输入值的集合。
合理?



