Javascript显示非常大的数字,而不是显示xe + n

时间:2013-04-17 17:51:36

标签: javascript math

我有javascript代码,通常会输出非常大的数字,我希望完全显示,而不是获取2.7934087356437704e+56这样的值,我希望它显示整个数字。是否有可能在JS中实现这一点?

2 个答案:

答案 0 :(得分:3)

如此庞大的数字,您将失去Javascript的精确度。它返回的指数形式是Javascript可以表示的最精确的形式。但是,如果您不关心精度的损失并且只想要扩展数字的字符串,则可以使用自己的函数来执行此操作。我找不到一种原生的方法,所以你必须自己添加它。

我找到了这个代码段,它将通过Jonas Raoni Soares Silva为您执行此操作:

String.prototype.expandExponential = function(){
    return this.replace(/^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/, function(x, s, n, f, c){
        var l = +c < 0, i = n.length + +c, x = (l ? n : f).length,
        c = ((c = Math.abs(c)) >= x ? c - x + l : 0),
        z = (new Array(c + 1)).join("0"), r = n + f;
        return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
    });
};

用法示例如下:

> var bignum = 2.7934087356437704e+56;
> (bignum+'').expandExponential();
"279340873564377040000000000000000000000000000000000000000"

您必须先将数字转换为字符串,因此+''

如果您确实需要精确的精确度,可以尝试使用Big Numberjavascript-bignum等库。

答案 1 :(得分:1)

在JavaScript中,所有数字都是浮点数,因此您没有绝对精度。