在JavaScript中打印一个大整数?

JOR*_*ORd 2 javascript printing string integer biginteger

我正在尝试使用JavaScript库来处理名为BigInteger.js的大整数.

具体来说,我试图打印一个大整数.但是,我得到了令人费解的结果.例如,当我尝试这个:

var x= bigInt("53542885039854749852");
document.write(x+"<br>");
Run Code Online (Sandbox Code Playgroud)

......我到了53542885039854750000.当我尝试这个:

var x= bigInt("104156103156113102156118165104101120101");
document.write(x+"<br>");
Run Code Online (Sandbox Code Playgroud)

......结果是1.041561031561131e+38.

有人能帮助我理解为什么我没有得到我期望的结果吗?

Nin*_*olz 6

您可以使用该toString()方法获取包含所有数字的字符串.

请注意,算术运算符将触发 valueOf函数而不是toString函数.将bigInteger转换为字符串时,应使用toString方法或String函数,而不是添加空字符串.

  • bigInt("999999999999999999").toString() => "999999999999999999"
  • String(bigInt("999999999999999999")) => "999999999999999999"
  • bigInt("999999999999999999") + "" => 1000000000000000000

var x= bigInt("53542885039854749852");
document.write(x + "<br>");             // this calls valueOf
document.write(x.valueOf() + "<br>");
document.write(x.toString() + "<br>");
Run Code Online (Sandbox Code Playgroud)
<script src="http://peterolson.github.com/BigInteger.js/BigInteger.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

要计算某些东西,您可以使用该类的方法.

   
var y = bigInt("104156103156113102156118165104101120101");
document.write(y.plus(1).toString() + "<br>");
document.write(y.multiply(2).toString() + "<br>");
document.write(y.plus(y).toString() + "<br>");
Run Code Online (Sandbox Code Playgroud)
<script src="http://peterolson.github.com/BigInteger.js/BigInteger.min.js"></script>
Run Code Online (Sandbox Code Playgroud)