如何在 Typescript 中将 BigNumber 转换为普通数字

How to convert a BigNumber to a normal number in Typescript

伙计们,我正在从智能合约中获取数据,它给出了一个很大的响应数字,我想将它转换成一个普通数字,以便我可以使用它来创建条形图。如何才能做到这一点?

这是我编写的一段代码,以便我可以将值存储在数组中:

//Creating candidatevoterarray for graph
    for (var i =0; i<= 4; i++){
        const temparray = this.candidatearray[i]
        const count = temparray.voteCount
        // this.candidatevotearray.push(count)
        console.log(count)
  }

正如文档 https://docs.ethers.io/v5/api/utils/bignumber/ 所说,BigNumber

中有一个方法 .toNumber()

TypeScript or ECMAScript, nor in Angular 中都没有 BigNumber 这样的东西。这意味着 BigNumber 必须是您自己写的或者来自您没有告诉我们的某个库。

如果是你自己写的,那么只有你自己知道如何将它转换成numberbigint。如果它来自图书馆,您将不得不查看该图书馆的文档。

但是,请注意有人会写 and/or 使用类似 BigNumber class 的主要原因是 因为它不能用 [=首先是 12=] 或 bigint!因此,很可能您的 BigNumber 无法 被(准确地)转换为 numberbigint at全部.

例如,我只是随机找到一个库,它定义了一个名为 BigNumber 的 class / 构造函数,名为 bignumber.js. It has a BigNumber.prototype.toNumber method,它将 BigNumber 的实例转换为ECMAScript 原语 number。但是当然,BigNumber 的数量比 number 的数量无限多(更准确地说,有 可数无限的 BigNumber 但只有 2 64 numbers),所以这个转换不可能准确。特别是,有一个最小和一个最大的 number 但没有最小或最大的 BigNumber,所以任何 BigNumber 大于最大的 number 或小于最小的 number根本无法表示。