Как ввести/отформатировать значение, например 0,2, в браузере ремиксов в процентах?
напримерfunction transfer(address _to, uint256 _value, uint256 percentage) public returns (bool);
(не обращайте внимания на функцию, это для демонстрационных целей)
uint256
является целочисленным типом, поэтому вы можете передавать только целые числа. В Solidity нет чисел с плавающей или фиксированной точкой.
Типичным обходным решением является использование рационального числа, то есть числителя и знаменателя, часто с фиксированным знаменателем. Например, при передаче процента вместо передачи 0,2 передайте 20 и разделите на 100:
amount * percentage / 100
Вы можете сделать что-то вроде этого:
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
пользователь19510
NowsyMe
пользователь19510