Solidity

Uint 變數除法結果為 0(點數)

  • November 8, 2022

我試圖通過使用錢包餘額與代幣總供應量的百分比來計算比例獎勵。

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

希望這可以幫助

引用自:https://ethereum.stackexchange.com/questions/139032