在数学中,我如何获得可被16整除的数字的最接近数字?
例如,我得到随机数100,我想将该数字(使用数学函数)转换为最接近100的可被16整除的数字(在这种情况下为96)
我正在尝试用JavaScript做这个,但如果我知道它的数学公式,我会很容易用任何语言做。
谢谢你, 此致
答案 0 :(得分:18)
生成随机整数。乘以16。
答案 1 :(得分:14)
除以16,舍入,乘以16:
n = Math.round(n / 16) * 16;
答案 2 :(得分:5)
function GetRandomNumberBetween(lo, hi) {
return Math.floor(lo + Math.random() * (hi - lo));
}
Number.prototype.FindClosestNumberThatIsDivisibleBy = function(n) {
return Math.round(this / n) * n; //simplify as per Guffa
/* originally:
var c = Math.ceil(n);
var f = Math.floor(n);
var m = num % n;
var r = f * n;
if (m > (n / 2))
r = c * n;
return r;
*/
};
var r = GetRandomNumberBetween(10, 100);
var c = r.FindClosestNumberThatIsDivisibleBy(16);
答案 3 :(得分:3)
function closest(n) {
var r = 0, ans = 0;
r = n % 16
if r < 8 {
ans = n - r
} else {
ans = n + (16 - r)
}
return ans;
}
答案 4 :(得分:1)
一般的JS解决方案
var divisor = 16;
var lower = 0;
var upper = 100;
var randDivisible = (Math.floor(Math.random()*(upper-lower))+lower)*divisor;
alert(randDivisible);
答案 5 :(得分:1)
以下是我理解你的问题的方法。你得到一个数字A,你必须找到一个数字B,它是16到A的最接近的倍数。
有伪代码,希望它是你要找的东西; - )