我正在研究Project Euler problems (目前是question 13)。
对于这个问题,我必须找到100个数字总和的前10位,所有数字的大小都类似于:
91,942,213,363,574,161,572,522,430,563,301,811,072,406,154,908,250
我想我可以使用像Java的BigInteger这样的东西,但是我开始解决JavaScript中的问题(我正在努力提高我的js的工作能力),我想继续使用它,甚至解决这个问题。
如果可能的话,我想坚持使用纯JS。
发布于 2015-06-06 10:24:44
你需要一个基于javascript的BigInteger库。有很多可供选择的。这是一个https://github.com/peterolson/BigInteger.js
您可以像这样使用它
var n = bigInt("91942213363574161572522430563301811072406154908250")
.plus("91942213363574161572522430563301811072406154908250");
发布于 2018-09-12 04:02:49
Javascript最近获得了一种新的原始数据类型BigInt
(截至2020年1月的第4阶段提案)。https://github.com/tc39/proposal-bigint
Chrome,火狐和一些其他浏览器已经开始在新版本(check compatibility here)中支持它,而其他浏览器仍在实现它。
https://developers.google.com/web/updates/2018/05/bigint
基本上可以使用下面的文字来声明它
var a = 1n;
或
var b = BigInt('22222222222222222222222222222222');
数学运算符不会在BigInt和Number之间进行自动转换,因此
1 + 1n
将抛出错误。
发布于 2015-06-06 10:28:06
您可以随时将sum转换为string
,取出.
并获取结果-如下所示:
var sum = 2384762348723648237462348;
sum = sum.toString(); // "2.3847623487236483e+24"
// Rip out the "."
sum = sum.substr(0, 1) + sum.substr(2);
// Grab the first 10 characters
var firstTen = sum.substr(0, 10);
https://stackoverflow.com/questions/30678303
复制相似问题