【问题标题】:how to calculate percentage in solidity如何计算固体百分比
【发布时间】:2021-07-09 01:54:41
【问题描述】:
    function splitAmount(uint256 amount) private {
        a1.transfer(amount.div(2));
        a2.transfer(amount.div(2));
    }

我在这方面看到过其他主题,但我觉得事情过于复杂。使用此代码,金额在 a1 和 a2 之间平均分配,除以 2。

如何使用相同的代码进行 80/20 拆分?

【问题讨论】:

    标签: ethereum solidity


    【解决方案1】:

    80% 是一样的

    • 除以 100,然后乘以 80

      还有

    • 除以 5,然后乘以 4

    a1.transfer(amount.div(5).mul(4)); // 80% of `amount`
    

    你可以用同样的方法简化 20%:

    • 除以 100 再乘以 20

      这是

    • 除以5,再乘以1

      这很简单

    • 除以 5

    a2.transfer(amount.div(5)); // 20% of `amount`
    

    【讨论】:

    • 然后“a1.transfer(amount.div(100).mul(80));”是一样的吗?
    • @Alessandro Yes for amounts 可以被 100 整除...如果 amount 的值为 50,.div(5).mul(4) 将按预期返回 40。但是.div(100).mul(80) 会返回 0,因为首先它会计算 50 / 100(导致无符号整数 0),然后是 0 * 80
    猜你喜欢
    • 2021-04-12
    • 2021-05-26
    • 2011-06-01
    • 2021-01-10
    • 1970-01-01
    • 2020-11-15
    • 2017-03-03
    相关资源
    最近更新 更多