Skip to content
This repository has been archived by the owner on Jun 14, 2021. It is now read-only.

Commit

Permalink
Revert remove insignificant digits (shopspring#159)
Browse files Browse the repository at this point in the history
* revert original remove insignificant change (PR 46), and add the logic back as a function
  • Loading branch information
fairyhunter13 committed Feb 27, 2020
1 parent 02f12ff commit 5cec1e9
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 9 deletions.
10 changes: 3 additions & 7 deletions decimal.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,13 +153,8 @@ func NewFromString(value string) (Decimal, error) {
// an int
intString = value
} else if len(parts) == 2 {
// strip the insignificant digits for more accurate comparisons.
decimalPart := strings.TrimRight(parts[1], "0")
intString = parts[0] + decimalPart
if intString == "" && parts[1] != "" {
intString = "0"
}
expInt := -len(decimalPart)
intString = parts[0] + parts[1]
expInt := -len(parts[1])
exp += int64(expInt)
} else {
return Decimal{}, fmt.Errorf("can't convert %s to decimal: too many .s", value)
Expand Down Expand Up @@ -870,6 +865,7 @@ func (d Decimal) RoundCash(interval uint8) Decimal {
dVal := Decimal{
value: iVal,
}

// TODO: optimize those calculations to reduce the high allocations (~29 allocs).
return d.Mul(dVal).Round(0).Div(dVal).Truncate(2)
}
Expand Down
5 changes: 3 additions & 2 deletions decimal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,9 @@ func TestNewFromStringDeepEquals(t *testing.T) {
}
tests := []StrCmp{
{"1", "1", true},
{"10", "10.0", true},
{"1.1", "1.10", true},
{"1.0", "1.0", true},
{"10", "10.0", false},
{"1.1", "1.10", false},
{"1.001", "1.01", false},
}

Expand Down

0 comments on commit 5cec1e9

Please sign in to comment.