将浮点数舍入到最接近 <n> 的倍数?
Round a float to the nearest multiple of <n>?
如何将浮点值舍入到最接近“n”的倍数?
例如,将 21.673 四舍五入到最接近的 8 的倍数应该得到 24。
并且,将 21.673 四舍五入到最接近的 4 的倍数应该得到 20。
我需要 JavaScript 中的解决方案。
很简单
Math.round(value / n) * n
还有一个,稍微短一点,稍微faster:
const nearrestMultipleOfN = (N,n) => n*(N/n+0.5|0);
它似乎达到了预期的效果:
const nearrestMultipleOfN = (N,n) => n*(N/n+0.5|0);
console.log(nearrestMultipleOfN(21.673,8));
console.log(nearrestMultipleOfN(21.673,4));
.as-console-wrapper{min-height:100%}
如果您发现自己正在寻找 可被 n
整除且 不超过 N
的最大整数(即 return 6,当给定 8 时可被 3 整除),你可能会这样:
const nearrestMultipleOfN = (N,n) => n*(N/n|0);
如何将浮点值舍入到最接近“n”的倍数?
例如,将 21.673 四舍五入到最接近的 8 的倍数应该得到 24。
并且,将 21.673 四舍五入到最接近的 4 的倍数应该得到 20。
我需要 JavaScript 中的解决方案。
很简单
Math.round(value / n) * n
还有一个,稍微短一点,稍微faster:
const nearrestMultipleOfN = (N,n) => n*(N/n+0.5|0);
它似乎达到了预期的效果:
const nearrestMultipleOfN = (N,n) => n*(N/n+0.5|0);
console.log(nearrestMultipleOfN(21.673,8));
console.log(nearrestMultipleOfN(21.673,4));
.as-console-wrapper{min-height:100%}
如果您发现自己正在寻找 可被 n
整除且 不超过 N
的最大整数(即 return 6,当给定 8 时可被 3 整除),你可能会这样:
const nearrestMultipleOfN = (N,n) => n*(N/n|0);