From 4f57a765ad196659085173ea27c68205d8d8261e Mon Sep 17 00:00:00 2001 From: 7768 <39715573+7768@users.noreply.github.com> Date: Tue, 26 Jun 2018 13:26:12 -0400 Subject: [PATCH] Merge PR 1354: CLI: Show fractional in human-readable format Fix https://github.com/cosmos/cosmos-sdk/issues/1353 before: ``` Shares: Status Bonded, Amount: -6508168128760126341/-3308135364330552608 Delegator Shares: -6508168128760126341/-3308135364330552608 ``` after: ``` Shares: Status Bonded, Amount: 2.0000000000 Delegator Shares: 2.0000000000 ``` --- CHANGELOG.md | 1 + types/rational.go | 1 + x/stake/validator.go | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da8bfb7f08..f7e8e20161 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ FIXES * Fixed bug where chain ID wasn't passed properly in x/bank REST handler * Fixed bug where `democli account` didn't decode the account data correctly * \#1343 - fixed unnecessary parallelism in CI +* \#1353 - CLI: Show pool shares fractions in human-readable format * \#1258 - printing big.rat's can no longer overflow int64 ## 0.19.0 diff --git a/types/rational.go b/types/rational.go index dc6569be30..5adf786727 100644 --- a/types/rational.go +++ b/types/rational.go @@ -116,6 +116,7 @@ func (r Rat) Quo(r2 Rat) Rat { return Rat{*new(big.Rat).Quo(&(r.Rat), &(r2.Ra func (r Rat) Add(r2 Rat) Rat { return Rat{*new(big.Rat).Add(&(r.Rat), &(r2.Rat))} } // Add - addition func (r Rat) Sub(r2 Rat) Rat { return Rat{*new(big.Rat).Sub(&(r.Rat), &(r2.Rat))} } // Sub - subtraction func (r Rat) String() string { return r.Rat.String() } +func (r Rat) FloatString() string { return r.Rat.FloatString(10) } // a human-friendly string format. The last digit is rounded to nearest, with halves rounded away from zero. var ( zero = big.NewInt(0) diff --git a/x/stake/validator.go b/x/stake/validator.go index e21b8f237b..e0e396385d 100644 --- a/x/stake/validator.go +++ b/x/stake/validator.go @@ -272,8 +272,8 @@ func (v Validator) HumanReadableString() (string, error) { resp := "Validator \n" resp += fmt.Sprintf("Owner: %s\n", bechOwner) resp += fmt.Sprintf("Validator: %s\n", bechVal) - resp += fmt.Sprintf("Shares: Status %s, Amount: %s\n", sdk.BondStatusToString(v.PoolShares.Status), v.PoolShares.Amount.String()) - resp += fmt.Sprintf("Delegator Shares: %s\n", v.DelegatorShares.String()) + resp += fmt.Sprintf("Shares: Status %s, Amount: %s\n", sdk.BondStatusToString(v.PoolShares.Status), v.PoolShares.Amount.FloatString()) + resp += fmt.Sprintf("Delegator Shares: %s\n", v.DelegatorShares.FloatString()) resp += fmt.Sprintf("Description: %s\n", v.Description) resp += fmt.Sprintf("Bond Height: %d\n", v.BondHeight) resp += fmt.Sprintf("Proposer Reward Pool: %s\n", v.ProposerRewardPool.String())