Wie kann man einen Wert wie 0,2 im Remix-Browser als Prozentsatz eingeben/formatieren?
z.Bfunction transfer(address _to, uint256 _value, uint256 percentage) public returns (bool);
(Kümmern Sie sich nicht um die Funktion, die zu Demonstrationszwecken dient)
uint256
ist ein ganzzahliger Typ, daher können Sie nur ganze Zahlen übergeben. Solidity hat keine Fließkomma- oder Festkommazahlen.
Eine typische Problemumgehung besteht darin, eine rationale Zahl zu verwenden, dh Zähler und Nenner, oft mit festem Nenner. Wenn Sie beispielsweise einen Prozentsatz übergeben, übergeben Sie anstelle von 0,2 20 und dividieren durch 100:
amount * percentage / 100
Sie können so etwas tun:
pragma solidity ^0.4.20;
import "./SafeMath.sol";
contract Percentage{
uint public testvalue;
///apply a percentage as modifying factor to the token amount to transfer
constructor(uint256 _value, uint256 percentage) public {
// reduce the amount to transfer by 20 Percent
uint transferAmount = (_value * SafeMath.sub(100, percentage)) / 100;
//set testresult
testvalue = transferAmount;
}
}
NowsyMe
Benutzer19510
NowsyMe
Benutzer19510