Rob*_*lab 13
在客户端执行计算而不是在Solidity中执行计算可能是最好的(最低的气体成本和微不足道的实现).
如果你发现在Solidity中需要它,那么只需要通过移动小数点来处理整数.类似于:https://en.wikipedia.org/wiki/Parts-per_notation
例如,这个函数让你决定精度,并使用一个额外的精度来正确地向上舍入:
pragma solidity ^0.4.6;
contract Divide {
function percent(uint numerator, uint denominator, uint precision) public
constant returns(uint quotient) {
// caution, check safe-to-multiply here
uint _numerator = numerator * 10 ** (precision+1);
// with rounding of last digit
uint _quotient = ((_numerator / denominator) + 5) / 10;
return ( _quotient);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你喂它101,450,3你得到224,即22.4%.
希望能帮助到你.