1

我正在使用 jsbn 库来管理 javascript 应用程序中的 BigIntegers。negate 功能似乎无法正常工作。

我希望 negate 函数像 Java 一样工作。

BigInteger minusOne = BigInteger.ONE.negate(); // -1

但是使用 jsbn 库,下面的代码会产生这个结果......

var BigInteger = require('jsbn').BigInteger;

var bi = BigInteger.ONE;
console.log(bi); // 1
console.log(bi.negate()); // 268435455 but should be -1, no ??

你可以在这里试试这个代码https://runkit.com/gikoo/jsbn-negate-function/1.0.0

4

1 回答 1

1

BigInteger 存储数字的方式允许它们跟踪比 JavaScript 可以跟踪的更大的数字。他们是如何做到的,你应该考虑一个黑匣子——当你准备好回到正常的 int 时,你需要这样做bi.negate().intValue(),或者如果它真的太大了,bi.negate().toString()

https://runkit.com/davidjwilkins/example-bigint

于 2021-07-07T17:09:55.787 回答