【问题标题】:Javascript display really big numbers rather than displaying xe+n [duplicate]Javascript显示非常大的数字而不是显示xe + n [重复]
【发布时间】:2013-04-17 17:51:36
【问题描述】:

我的 javascript 代码经常输出非常大的数字,我希望完全显示而不是获取诸如 2.7934087356437704e+56 之类的值,我希望它显示整个数字。有可能在 JS 中实现吗?

【问题讨论】:

标签: javascript math


【解决方案1】:

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

我找到了这个 sn-p,它可以通过 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 之类的库。

【讨论】:

  • :) 精度并不重要,我只需要它在位数方面是正确的长度。谢谢!
【解决方案2】:

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

【讨论】:

  • 所以无法将数字准确显示到~250位?
  • @Seb,您需要使用处理 bignums 的第三方库。有很多可用的。
  • @Fabien,你能指点我吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2018-06-22
  • 2017-11-21
相关资源
最近更新 更多