address rounding errors in fee calculation
This commit is contained in:
parent
3bce5de0d5
commit
1137120aa2
1 changed files with 6 additions and 0 deletions
|
|
@ -104,7 +104,13 @@ namespace graphene { namespace chain {
|
||||||
auto scaled = fc::uint128(base_value) * scale;
|
auto scaled = fc::uint128(base_value) * scale;
|
||||||
scaled /= GRAPHENE_100_PERCENT;
|
scaled /= GRAPHENE_100_PERCENT;
|
||||||
FC_ASSERT( scaled <= GRAPHENE_MAX_SHARE_SUPPLY );
|
FC_ASSERT( scaled <= GRAPHENE_MAX_SHARE_SUPPLY );
|
||||||
|
//idump( (base_value)(scaled)(core_exchange_rate) );
|
||||||
auto result = asset( scaled.to_uint64(), 0 ) * core_exchange_rate;
|
auto result = asset( scaled.to_uint64(), 0 ) * core_exchange_rate;
|
||||||
|
//FC_ASSERT( result * core_exchange_rate >= asset( scaled.to_uint64()) );
|
||||||
|
|
||||||
|
while( result * core_exchange_rate < asset( scaled.to_uint64()) )
|
||||||
|
result.amount++;
|
||||||
|
|
||||||
FC_ASSERT( result.amount <= GRAPHENE_MAX_SHARE_SUPPLY );
|
FC_ASSERT( result.amount <= GRAPHENE_MAX_SHARE_SUPPLY );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue