[英]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.