Solidity
堅固的大數字 - 返回值
假設乙太坊 Solidity 從它的一個函式中返回一個數字,我把它輸入到 Javascript 中。
現在,因為我在我的 js 應用程序中編寫測試,我必須檢查返回值是否等於某個數字乘以某個數字。
基本上,讓我們看一下場景。
在 JavaScript 中,
方式1)
web3.utils.toBN('100000000000000') * 30
方式2)
web3.utils.toBN('100000000000000') * web3.utils.toBN('30')
根據以上2個,我可以使用方式1)嗎?原因是如果我使用方式 2,我的程式碼就會變得臃腫不堪
toBN
。
兩者都不。您不能使用
*
將兩個 BN 相乘。為此,您應該使用該mul
功能(https://github.com/indutny/bn.js/#arithmetics)如果您真正想要做的是從/轉換為 wei/ether,您可以使用
web3.utils.toWei
並web3.utils.toEther
與 結合使用web3.utils.toBN
,例如web3.utils.toBN(web3.utils.toWei("30", "ether"))
.請注意,您可以使用 JavaScript 的本機
BigInt
進行許多計算和比較。BigInt("0x100000000000000") * 30n
是有效的 JavaScript 並將生成有效的 BigInt。您只需要確保您的目標平台支持它(https://caniuse.com/?search=bigint)。