我有一个数字,可以是2位数字,例如67、24、82,也可以是3位数字,例如556、955、865或4位数字,依此类推。如何根据数字将数字四舍五入到最接近的n + 1位数字?

例子:

roundup(87) => 100,
roundup(776) => 1000,
roudnup(2333) => 10000

等等。

最佳答案

您可以取10的对数并四舍五入以获得值。

function roundup(v) {
    return Math.pow(10, Math.ceil(Math.log10(v)));
}

console.log(roundup(87));   //   100
console.log(roundup(776));  //  1000
console.log(roundup(2333)); // 10000


对于负数,可以通过将检查结果作为因子来保存符号,也可以将负数作为符号。那么绝对值是必需的,因为对数仅适用于正数。

function roundup(v) {
    return (v >= 0 || -1) * Math.pow(10, 1 + Math.floor(Math.log10(Math.abs(v))));
}

console.log(roundup(87));    //    100
console.log(roundup(-87));   //   -100
console.log(roundup(776));   //   1000
console.log(roundup(-776));  //  -1000
console.log(roundup(2333));  //  10000
console.log(roundup(-2333)); // -10000

关于javascript - 如何在JavaScript中根据数字将数字四舍五入到最接近的100/1000?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51169472/

10-10 05:46