[英]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或ECMAScript以及BigNumber
中都没有BigNumber这样的东西。 这意味着BigNumber
必须是您自己编写的,或者来自您没有告诉我们的某个库。
如果它是您自己编写的,那么只有您知道如何将其转换为number
或bigint
。 如果它来自库,您将不得不查看该库的文档。
但是,请注意,有人会编写和/或使用BigNumber
class 之类的主要原因是因为它首先不能用number
或bigint
表示,所以很可能是您的BigNumber
不能完全转换(准确)成number
或bigint
。
例如,我只是随机找到了一个库,它定义了一个名为BigNumber 的 class / 构造函数 function ,名为 bignumber.js BigNumber
它有一个BigNumber.prototype.toNumber
方法,该方法将BigNumber
的实例转换为 ECMAScript 原始number
。 但是当然, BigNumber
的数量比number
的数量要多得多(更准确地说, BigNumber
的数量可以无限多,但只有 2 64 个number
),所以这种转换不可能是准确的。 特别是,有一个最小和一个最大的number
,但没有最小或最大的BigNumber
,因此任何大于最大number
或小于最小number
的BigNumber
根本无法表示。
我做这样的事情:
const getBalance = async () => {
try {
const balance = await token.balanceOf(address)
console.log(Number(balance._hex))
return balance;
} catch (error) {
console.log(error)
}
}
useEffect(() => {
getBalance().then((res) => setOwnerBalance(Number(res._hex)))
}, [data])
console.log(Number(balance._hex))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.