我有经常输出非常大的数字的 javascript 代码,我希望完全显示而不是获得一个值,例如2.7934087356437704e+56
我希望它显示整个数字。有可能在 JS 中实现这一点吗?
问问题
4047 次
2 回答
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 Number或javascript-bignum 之类的库。
于 2013-04-17T18:02:44.077 回答
1
在 JavaScript 中,所有数字都是浮点数,因此您没有绝对精度。
于 2013-04-17T17:53:40.943 回答