在 JavaScript 中从整数四舍五入为整数?
2022-01-02
135
所以我有一些数字
x = 320232
y = 2301
z = 12020305
。我想使用 JavaScript 将这些数字四舍五入,使它们变为
x = 320000
y = 2300
z = 12000000
。
我尝试了
Math.round
和
Math.floor
,但结果发现它们只适用于小数值,如
a = 3.1; Math.round(a); // 输出 3
,而不是整数。
所以我的问题是,我们是否可以使用 JavaScript 对整数进行四舍五入?如果可以,那么怎么做?
编辑:我希望将其四舍五入到上面的变量中所示的起始 3 位数字。例如如果有另一个变量名为
c = 423841
它应该四舍五入为
c = 424000
。
3个回答
您可以使用十的对数并调整数字。
const
format = n => v => {
if (!v) return 0;
const l = Math.floor(Math.log10(Math.abs(v))) - n + 1;
return Math.round(v / 10 ** l) * 10 ** l;
};
console.log([0, -9876, 320232, 2301, 12020305, 123456789].map(format(3)));
Nina Scholz
2022-01-02
解决方案是首先计算需要舍去多少个数字,然后在舍入中使用该数字。
Math.round(1234/100)*100
将舍入为
1200
,因此我们可以使用它进行舍入。然后,我们只需要确定在此示例中用什么替换 100。
也就是说,它将是 1,后跟
LENGTH - 3
个零。该数字可以计算为 10 的
LENGTH - 3
次方,在 JS 中:
10 ** (length - 3)
。
var x = 320232;
var y = 2301;
var z = 12020305;
function my_round(number){
var org_number = number;
// calculate integer number
var count = 0;
if (number >= 1) ++count;
while (number / 10 >= 1) {
number /= 10;
++count;
}
// length - 3
count = Math.round(count) - 3;
if (count < 0){
count = 0;
}
// 10 to the power of (length - 3)
var helper = 10 ** count;
return Math.round(org_number/helper)*helper;
}
alert(my_round(x));
alert(my_round(y));
alert(my_round(z));
这不是最漂亮的代码,尽管我试图使其成为可解释的代码。
Dennis van de Hoef - Xiotin
2022-01-02
这应该可行:
function roundToNthPlace(input, n) {
let powerOfTen = 10 ** n
return Math.round(input/powerOfTen) * powerOfTen;
}
console.log([320232, 2301,12020305, 423841].map(input => roundToNthPlace(input, 3)));
Output: [320000, 2000, 12020000, 424000]
Nikhil Pathania
2022-01-02