如何转换该数字的后3位数字?

时间:2013-08-21 20:33:59

标签: javascript numbers

如何转换数字的最后3位数?数字将大于8000。

例如:

从249439到249000?

4 个答案:

答案 0 :(得分:6)

您可以使用模数运算符%获取最后三位数,其中(对于正数)计算整数除法后的余数;例如,249439 % 1000439

所以要向下舍入到最接近的千位,你可以减去这三位数:

var rounded = original - original % 1000;

(例如,如果original249439,那么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))

JS Fiddle demo

如果您希望始终围绕向下,我会修改上述内容,以便:

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))

JS Fiddle demo

通过合并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))

JS Fiddle demo

或者,最后,鉴于您只需要用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))

JS Fiddle demo

参考文献:

答案 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是您要移动的金额。