如果我问了一个简单的问题,我们深表歉意,因为现有的答案无法为我提供解决方案。我想知道在给定网格大小的情况下,将值捕捉(楼板天花板或圆形(到最接近该值的单位的最简单方法是什么?我不太关心捕捉模式,只要它是一致的,但它必须适用于分数网格单位以及负数。
例如,如果网格大小为0.25,并且通过捕捉函数传递一个值:
0.1 = 0
0.5 = 0.5
-0.2 = -0.25
0.9 = 1
-0.45 = -0.5
3.125 = 3
-42.675 = -42.75
99.765 = 100
如果我的范围保证在0和1之间(或0和-1(,我可能会使用const x_snapped = Math.round(x / grid) * grid
。然而,如果x
和/或grid
大于1或低于-1,这将停止工作,我认为届时只返回整数。
const x_grid = Math.round(x / grid) * grid
事实上,这将适用于x
的所有值:出于某种原因,我确信结果将被四舍五入到超过1的整数,小数将被丢弃。很抱歉我犯了一个愚蠢的错误,但至少这为其他遇到同样问题并找到这个问题的人提供了一个有用的答案。