如何在 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
必须是您自己写的或者来自您没有告诉我们的某个库。
如果是你自己写的,那么只有你自己知道如何将它转换成number
或bigint
。如果它来自图书馆,您将不得不查看该图书馆的文档。
但是,请注意有人会写 and/or 使用类似 BigNumber
class 的主要原因是 因为它不能用 [=首先是 12=] 或 bigint
!因此,很可能您的 BigNumber
无法 被(准确地)转换为 number
或 bigint
at全部.
例如,我只是随机找到一个库,它定义了一个名为 BigNumber
的 class / 构造函数,名为 bignumber.js. It has a BigNumber.prototype.toNumber
method,它将 BigNumber
的实例转换为ECMAScript 原语 number
。但是当然,BigNumber
的数量比 number
的数量无限多(更准确地说,有 可数无限的 BigNumber
但只有 2 64 number
s),所以这个转换不可能准确。特别是,有一个最小和一个最大的 number
但没有最小或最大的 BigNumber
,所以任何 BigNumber
大于最大的 number
或小于最小的 number
根本无法表示。
伙计们,我正在从智能合约中获取数据,它给出了一个很大的响应数字,我想将它转换成一个普通数字,以便我可以使用它来创建条形图。如何才能做到这一点?
这是我编写的一段代码,以便我可以将值存储在数组中:
//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
必须是您自己写的或者来自您没有告诉我们的某个库。
如果是你自己写的,那么只有你自己知道如何将它转换成number
或bigint
。如果它来自图书馆,您将不得不查看该图书馆的文档。
但是,请注意有人会写 and/or 使用类似 BigNumber
class 的主要原因是 因为它不能用 [=首先是 12=] 或 bigint
!因此,很可能您的 BigNumber
无法 被(准确地)转换为 number
或 bigint
at全部.
例如,我只是随机找到一个库,它定义了一个名为 BigNumber
的 class / 构造函数,名为 bignumber.js. It has a BigNumber.prototype.toNumber
method,它将 BigNumber
的实例转换为ECMAScript 原语 number
。但是当然,BigNumber
的数量比 number
的数量无限多(更准确地说,有 可数无限的 BigNumber
但只有 2 64 number
s),所以这个转换不可能准确。特别是,有一个最小和一个最大的 number
但没有最小或最大的 BigNumber
,所以任何 BigNumber
大于最大的 number
或小于最小的 number
根本无法表示。