web-dev-qa-db-ja.com

JavaScriptで文字列をbigIntに変換する方法

JavaScriptでBigIntegerのように文字列をBigIntに変換する必要があります

var reqId = "78099864177253771992779766288266836166272662";
var result = parseInt(reqId);
document.write(result);

JavaScriptは(2 ^ 53)-1までの整数しか許可しないため、結果の値が一致しません。

これを克服する方法はありますか?

9
rselvaganesh

BigInt がネイティブJavaScript言語機能になりました。 TC39プロセスのステージ3で、V8 v6.7とChrome 67。

有効な数値リテラルを含む文字列をBigIntに変換するには、グローバルBigInt関数を使用します。

const string = '78099864177253771992779766288266836166272662';
BigInt(string);
// 78099864177253771992779766288266836166272662n

数値をコードにハードコードするだけの場合は、文字列から変換する必要はありません。代わりにBigIntリテラルを使用してください:

const value = 78099864177253771992779766288266836166272662n;
22
Mathias Bynens

BigInteger.jsと呼ばれるJavaScriptライブラリを使用できます。これは、JavaScriptの任意の長さの整数ライブラリであり、無制限の整数の算術演算を可能にしますサイズ、メモリと時間の制限があります。 このlibはこのリンクからダウンロードできます のようにvar largeNumber = bigInt("75643564363473453456342378564387956906736546456235345"); libのドキュメントはこちら https://www.npmjs .com/package/big-integer

4
kamlesh pandey

mathjs を使用できます:

var reqId = "78099864177253771992779766288266836166272662";
var myBigNumber = math.bignumber(reqId);
var res = math.add(myBigNumber, 1);
console.log(myBigNumber.toString());
// 7.8099864177253771992779766288266836166272662e+43
console.log(res.toString());
// 7.8099864177253771992779766288266836166272663e+43
0
Shanoor