【问题标题】:Multiplication and Division with contract value合约价值的乘法和除法
【发布时间】:2019-09-22 18:12:59
【问题描述】:

我试图在以下合同中插入一个 if 子句,以检查提款(这是一个示例银行合同)是否小于整个合同价值的 10%,即整个银行的价值。 当我插入如下代码时,它会给我一个错误,例如 “UnimplementedFeatureError:尚未实现 - FixedPointType。”

我做错了什么? 你能帮助我吗? 非常感谢!

pragma solidity ^0.4.24;

contract bank{
mapping (address => uint) private balance;
address public Owner;

function WithDrawMoreMoney(uint a) public{
    require (balance[msg.sender]>=0);
    require (address(this).balance>=0);
    require ((a) =< (address (this).balance)*(uint(1.1)));    // The problematic line
    balance[msg.sender]-=a;
    (msg.sender).transfer(a);

【问题讨论】:

标签: solidity smartcontracts banking remix


【解决方案1】:

检查提款...是否小于整个[合约]价值的[10%]

我想你只是想要这个:

require(a <= address(this).balance / 10);

当我认为您的意思是 0.1 时,您的代码乘以 1.1,但无论哪种方式,Solidity 都只有整数。除以 10 个作品。您还有一个错字:=&lt; 而不是 &lt;=

如果您想查看其他百分比,例如 23%:

require(a <= address(this).balance * 23 / 100);

确保先进行乘法运算,并始终记住防止整数溢出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多