mirror of
https://github.com/shopspring/decimal.git
synced 2024-11-22 20:40:48 +01:00
Pass lint, add travis stuff to run golint
This commit is contained in:
parent
868a37b979
commit
2aa9963045
3 changed files with 29 additions and 25 deletions
|
@ -6,8 +6,12 @@ go:
|
||||||
- 1.4
|
- 1.4
|
||||||
- tip
|
- tip
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- go get github.com/golang/lint/golint
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- go build .
|
- go build .
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- go test -v
|
- go test -v
|
||||||
|
- golint
|
||||||
|
|
32
decimal.go
32
decimal.go
|
@ -43,8 +43,8 @@ import (
|
||||||
//
|
//
|
||||||
var DivisionPrecision = 16
|
var DivisionPrecision = 16
|
||||||
|
|
||||||
// Set this to true if you want the decimal to be JSON marshaled as a number,
|
// MarshalJSONWithoutQuotes should be set to true if you want the decimal to
|
||||||
// instead of as a string.
|
// be JSON marshaled as a number, instead of as a string.
|
||||||
// WARNING: this is dangerous for decimals with many digits, since many JSON
|
// WARNING: this is dangerous for decimals with many digits, since many JSON
|
||||||
// unmarshallers (ex: Javascript's) will unmarshal JSON numbers to IEEE 754
|
// unmarshallers (ex: Javascript's) will unmarshal JSON numbers to IEEE 754
|
||||||
// double-precision floating point numbers, which means you can potentially
|
// double-precision floating point numbers, which means you can potentially
|
||||||
|
@ -351,13 +351,13 @@ func (d Decimal) DivRound(d2 Decimal, precision int32) Decimal {
|
||||||
|
|
||||||
if c < 0 {
|
if c < 0 {
|
||||||
return q
|
return q
|
||||||
} else {
|
|
||||||
if d.value.Sign()*d2.value.Sign() < 0 {
|
|
||||||
return q.Sub(New(1, -precision))
|
|
||||||
} else {
|
|
||||||
return q.Add(New(1, -precision))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if d.value.Sign()*d2.value.Sign() < 0 {
|
||||||
|
return q.Sub(New(1, -precision))
|
||||||
|
}
|
||||||
|
|
||||||
|
return q.Add(New(1, -precision))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mod returns d % d2.
|
// Mod returns d % d2.
|
||||||
|
@ -436,11 +436,11 @@ func (d Decimal) Rat() *big.Rat {
|
||||||
// NOTE(vadim): must negate after casting to prevent int32 overflow
|
// NOTE(vadim): must negate after casting to prevent int32 overflow
|
||||||
denom := new(big.Int).Exp(tenInt, big.NewInt(-int64(d.exp)), nil)
|
denom := new(big.Int).Exp(tenInt, big.NewInt(-int64(d.exp)), nil)
|
||||||
return new(big.Rat).SetFrac(d.value, denom)
|
return new(big.Rat).SetFrac(d.value, denom)
|
||||||
} else {
|
|
||||||
mul := new(big.Int).Exp(tenInt, big.NewInt(int64(d.exp)), nil)
|
|
||||||
num := new(big.Int).Mul(d.value, mul)
|
|
||||||
return new(big.Rat).SetFrac(num, oneInt)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mul := new(big.Int).Exp(tenInt, big.NewInt(int64(d.exp)), nil)
|
||||||
|
num := new(big.Int).Mul(d.value, mul)
|
||||||
|
return new(big.Rat).SetFrac(num, oneInt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Float64 returns the nearest float64 value for d and a bool indicating
|
// Float64 returns the nearest float64 value for d and a bool indicating
|
||||||
|
@ -505,7 +505,7 @@ func (d Decimal) Round(places int32) Decimal {
|
||||||
|
|
||||||
// floor for positive numbers, ceil for negative numbers
|
// floor for positive numbers, ceil for negative numbers
|
||||||
_, m := ret.value.DivMod(ret.value, tenInt, new(big.Int))
|
_, m := ret.value.DivMod(ret.value, tenInt, new(big.Int))
|
||||||
ret.exp += 1
|
ret.exp++
|
||||||
if ret.value.Sign() < 0 && m.Cmp(zeroInt) != 0 {
|
if ret.value.Sign() < 0 && m.Cmp(zeroInt) != 0 {
|
||||||
ret.value.Add(ret.value, oneInt)
|
ret.value.Add(ret.value, oneInt)
|
||||||
}
|
}
|
||||||
|
@ -636,8 +636,8 @@ func (d Decimal) MarshalText() (text []byte, err error) {
|
||||||
return []byte(d.String()), nil
|
return []byte(d.String()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: buggy, unintuitive, and DEPRECATED! Use StringFixed instead.
|
|
||||||
// StringScaled first scales the decimal then calls .String() on it.
|
// StringScaled first scales the decimal then calls .String() on it.
|
||||||
|
// NOTE: buggy, unintuitive, and DEPRECATED! Use StringFixed instead.
|
||||||
func (d Decimal) StringScaled(exp int32) string {
|
func (d Decimal) StringScaled(exp int32) string {
|
||||||
return d.rescale(exp).String()
|
return d.rescale(exp).String()
|
||||||
}
|
}
|
||||||
|
@ -693,7 +693,7 @@ func (d *Decimal) ensureInitialized() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the smallest Decimal that was passed in the arguments.
|
// Min returns the smallest Decimal that was passed in the arguments.
|
||||||
//
|
//
|
||||||
// To call this function with an array, you must do:
|
// To call this function with an array, you must do:
|
||||||
//
|
//
|
||||||
|
@ -710,7 +710,7 @@ func Min(first Decimal, rest ...Decimal) Decimal {
|
||||||
return ans
|
return ans
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the largest Decimal that was passed in the arguments.
|
// Max returns the largest Decimal that was passed in the arguments.
|
||||||
//
|
//
|
||||||
// To call this function with an array, you must do:
|
// To call this function with an array, you must do:
|
||||||
//
|
//
|
||||||
|
|
|
@ -1174,10 +1174,10 @@ func TestDecimal_Scan(t *testing.T) {
|
||||||
|
|
||||||
// at least SQLite returns an int64 when 0 is stored in the db
|
// at least SQLite returns an int64 when 0 is stored in the db
|
||||||
// and you specified a numeric format on the schema
|
// and you specified a numeric format on the schema
|
||||||
dbvalue_int := int64(0)
|
dbvalueInt := int64(0)
|
||||||
expected = New(dbvalue_int, 0)
|
expected = New(dbvalueInt, 0)
|
||||||
|
|
||||||
err = a.Scan(dbvalue_int)
|
err = a.Scan(dbvalueInt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Scan failed... no need to test result value
|
// Scan failed... no need to test result value
|
||||||
t.Errorf("a.Scan(0) failed with message: %s", err)
|
t.Errorf("a.Scan(0) failed with message: %s", err)
|
||||||
|
@ -1191,14 +1191,14 @@ func TestDecimal_Scan(t *testing.T) {
|
||||||
|
|
||||||
// in case you specified a varchar in your SQL schema,
|
// in case you specified a varchar in your SQL schema,
|
||||||
// the database driver will return byte slice []byte
|
// the database driver will return byte slice []byte
|
||||||
value_str := "535.666"
|
valueStr := "535.666"
|
||||||
dbvalue_str := []byte(value_str)
|
dbvalueStr := []byte(valueStr)
|
||||||
expected, err = NewFromString(value_str)
|
expected, err = NewFromString(valueStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = a.Scan(dbvalue_str)
|
err = a.Scan(dbvalueStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Scan failed... no need to test result value
|
// Scan failed... no need to test result value
|
||||||
t.Errorf("a.Scan('535.666') failed with message: %s", err)
|
t.Errorf("a.Scan('535.666') failed with message: %s", err)
|
||||||
|
@ -1211,12 +1211,12 @@ func TestDecimal_Scan(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// lib/pq can also return strings
|
// lib/pq can also return strings
|
||||||
expected, err = NewFromString(value_str)
|
expected, err = NewFromString(valueStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = a.Scan(value_str)
|
err = a.Scan(valueStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Scan failed... no need to test result value
|
// Scan failed... no need to test result value
|
||||||
t.Errorf("a.Scan('535.666') failed with message: %s", err)
|
t.Errorf("a.Scan('535.666') failed with message: %s", err)
|
||||||
|
|
Loading…
Reference in a new issue