簡體   English   中英

如何將 BigNumber 轉換為 Typescript 中的普通數字

[英]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()

TypeScriptECMAScript以及BigNumber中都沒有BigNumber這樣的東西。 這意味着BigNumber必須是您自己編寫的,或者來自您沒有告訴我們的某個庫。

如果它是您自己編寫的,那么只有您知道如何將其轉換為numberbigint 如果它來自庫,您將不得不查看該庫的文檔。

但是,請注意,有人會編寫和/或使用BigNumber class 之類的主要原因是因為它首先不能用numberbigint表示,所以很可能是您的BigNumber不能完全轉換(准確)成numberbigint

例如,我只是隨機找到了一個庫,它定義了一個名為BigNumber 的 class / 構造函數 function ,名為 bignumber.js BigNumber 它有一個BigNumber.prototype.toNumber方法,該方法將BigNumber的實例轉換為 ECMAScript 原始number 但是當然, BigNumber的數量比number的數量要多得多(更准確地說, BigNumber的數量可以無限多,但只有 2 64 個number ),所以這種轉換不可能是准確的。 特別是,有一個最小和一個最大的number ,但沒有最小或最大的BigNumber ,因此任何大於最大number或小於最小numberBigNumber根本無法表示。

我做這樣的事情:

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM