トークンを発行するコントラクトを作成しています。トークンを保持しているアカウントで、発行されたすべてのトークンのうち、所有している割合を確認できるようにしたいと思います。イーサリアムはまだ浮動小数点数を実装していないことを知っています。私は何をすべきか?
Solidityではなく、クライアントでその計算を実行するのがおそらく最善です(ガスコストが最も低く、実装は簡単です)。
Solidityで必要な場合は、小数点をシフトして整数を操作するだけです。類似: https://en.wikipedia.org/wiki/Parts-per_notation
たとえば、この関数を使用すると、精度の程度を決定し、さらに1つの精度を使用して正しく切り上げることができます。
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);
}
}
101,450、3を与えると、224、つまり22.4%になります。
それが役に立てば幸い。