如何从格式化数字中停止javascript?

时间:2014-01-19 12:03:48

标签: javascript math

当你在JS中运行一笔巨款时,会出现类似:1.0328135768135768e+21的内容。 有没有办法让它输出一个纯整数,即使它很长?

感谢。

1 个答案:

答案 0 :(得分:2)

.toString() method似乎可以解决问题。排序:

1.0328135768135768e+21.toString("10");
// "1032813576813576802460"

1.0328135768135768e+50.toString("10")
// "103281357681357664662886440420862446808642642662440"

注意(如上所示)由于JS处理浮点数,你不只是得到你用零指定的数字。

如果你想要最后全部为零,你可以自己格式化它:

function formatNumber(n) {
    var s = n + "",
        a = s.split("e");
    if (a.length === 1)
        return s;
    s = a[0].replace(/\./,"");
    s += (new Array(+a[1] - s.length + 2).join("0"));
    return s;
}

演示:http://jsfiddle.net/HLQQ9/(注意: 根本没有进行过彻底的测试,只是一个半生不熟的想法,我一起入侵给你一个起点。)

或者周围有几个big number个库。