Solidity
Uint 變數除法結果為 0(點數)
我試圖通過使用錢包餘額與代幣總供應量的百分比來計算比例獎勵。
uint256 reward = walletBalance / totalSupply * rewardPool
但是,結果始終為 0,因為任何低於 1 的值都被視為 0(不支持點數)?
在這種情況下,是否有一種“正確”的方法來計算百分比。以上所有變數都是 uint256 和十進制 18。
似乎簡單的解決方案是將獎勵池移動到分子 ,所以
reward = walletBalance * rewardPool / totalSupply
查看 Solmate 庫以幫助您解決此問題。
一個例子可以是https://github.com/transmissions11/solmate/blob/main/src/utils/FixedPointMathLib.sol
希望這可以幫助