如何转换数字的最后3位数?数字将大于8000。
例如:
从249439到249000?
答案 0 :(得分:6)
您可以使用模数运算符%
获取最后三位数,其中(对于正数)计算整数除法后的余数;例如,249439 % 1000
为439
。
所以要向下舍入到最接近的千位,你可以减去这三位数:
var rounded = original - original % 1000;
(例如,如果original
为249439
,那么rounded
将为249000
)。
答案 1 :(得分:1)
我建议如下:
function roundLastNDigits (num, digits) {
// making sure the variables exist, and are numbers; if *not* we quit at this point:
if (!num || !parseInt(num,10) || !digits || !parseInt(digits,10)) {
return false;
}
else {
/* otherwise we:
- divide the number by 10 raised to the number of digits
(to shift divide the number so that those digits follow
the decimal point), then
- we round that number, then
- multiply by ten raised to the number of digits (to
recreate the same 'size' number/restoring the decimal fraction
to an integer 'portion' */
return Math.round(num / Math.pow(10, parseInt(digits,10))) * Math.pow(10,digits);
}
}
console.log(roundLastNDigits(249439, 3))
如果您希望始终围绕向下,我会修改上述内容,以便:
function roundLastNDigits (num, digits) {
if (!num || !parseInt(num,10) || !digits || !parseInt(digits,10)) {
return false;
}
else {
return Math.floor(num / Math.pow(10, parseInt(digits,10))) * Math.pow(10,digits);
}
}
console.log(roundLastNDigits(8501, 3))
通过合并ruakh's genius approach来简化上述内容:
function roundLastNDigits (num, digits) {
if (!num || !parseInt(num,10) || !digits || !parseInt(digits,10)) {
return false;
}
else {
return num - (num % Math.pow(10,parseInt(digits,10)));
}
}
console.log(roundLastNDigits(8501, 3))
或者,最后,鉴于您只需要用0:
替换最后三位数字符function roundLastNDigits (num, digits) {
if (!num || !digits || !parseInt(digits,10)) {
return false;
}
else {
var reg = new RegExp('\\d{' + digits + '}$');
return num.toString().replace(reg, function (a) {
return new Array(parseInt(digits,10) + 1).join(0);
});
}
}
console.log(roundLastNDigits(8501, 3))
参考文献:
答案 2 :(得分:0)
为了永远四舍五入,我建议将1000
划分为 Int 然后再追加1000
var x = 249439,
y = ((x / 1000) | 0) * 1000; // 249000
答案 3 :(得分:0)
1) Math.round(num.toPrecision(3));
这不考虑第3个值之前的值。
2)
这是一个糟糕的解决方案,但它确实有效。 num = 50343 //无论你输入什么。
m = 10 ^ n。
Math.round(NUM * M)/ M
n是您要移动的金额。