Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gostnops
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wei.xuan
gostnops
Commits
17916dfe
Commit
17916dfe
authored
Jul 05, 2019
by
aliiohs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
change name from BigDecimal to Decimal
parent
73462bb7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
98 additions
and
91 deletions
+98
-91
decimal.go
math/big/decimal.go
+60
-53
decimal_benchmark_test.go
math/big/decimal_benchmark_test.go
+2
-2
decimal_test.go
math/big/decimal_test.go
+36
-36
No files found.
math/big/decimal.go
View file @
17916dfe
This diff is collapsed.
Click to expand it.
math/big/decimal_benchmark_test.go
View file @
17916dfe
...
@@ -17,11 +17,11 @@ import "testing"
...
@@ -17,11 +17,11 @@ import "testing"
func
BenchmarkRound
(
b
*
testing
.
B
)
{
func
BenchmarkRound
(
b
*
testing
.
B
)
{
b
.
StopTimer
()
b
.
StopTimer
()
var
roundTo
Big
Decimal
var
roundTo
Decimal
tests
:=
[]
struct
{
tests
:=
[]
struct
{
input
string
input
string
scale
int
scale
int
inputDec
Big
Decimal
inputDec
Decimal
}{
}{
{
input
:
"123456789.987654321"
,
scale
:
1
},
{
input
:
"123456789.987654321"
,
scale
:
1
},
{
input
:
"15.1"
,
scale
:
0
},
{
input
:
"15.1"
,
scale
:
0
},
...
...
math/big/decimal_test.go
View file @
17916dfe
...
@@ -50,7 +50,7 @@ func TestFromUint(t *testing.T) {
...
@@ -50,7 +50,7 @@ func TestFromUint(t *testing.T) {
{
18446744073709551615
,
"18446744073709551615"
},
{
18446744073709551615
,
"18446744073709551615"
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
dec
.
FromUint
(
tt
.
input
)
dec
.
FromUint
(
tt
.
input
)
str
:=
dec
.
ToString
()
str
:=
dec
.
ToString
()
assert
.
Equal
(
t
,
string
(
str
),
tt
.
output
)
assert
.
Equal
(
t
,
string
(
str
),
tt
.
output
)
...
@@ -73,7 +73,7 @@ func TestToInt(t *testing.T) {
...
@@ -73,7 +73,7 @@ func TestToInt(t *testing.T) {
{
"-9223372036854775809"
,
-
9223372036854775808
,
ErrOverflow
},
{
"-9223372036854775809"
,
-
9223372036854775808
,
ErrOverflow
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
dec
.
FromString
([]
byte
(
tt
.
input
))
dec
.
FromString
([]
byte
(
tt
.
input
))
result
,
ec
:=
dec
.
ToInt
()
result
,
ec
:=
dec
.
ToInt
()
assert
.
Equal
(
t
,
ec
,
tt
.
err
)
assert
.
Equal
(
t
,
ec
,
tt
.
err
)
...
@@ -97,7 +97,7 @@ func TestToUint(t *testing.T) {
...
@@ -97,7 +97,7 @@ func TestToUint(t *testing.T) {
{
"9999999999999999999999999.000"
,
18446744073709551615
,
ErrOverflow
},
{
"9999999999999999999999999.000"
,
18446744073709551615
,
ErrOverflow
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
_
=
dec
.
FromString
([]
byte
(
tt
.
input
))
_
=
dec
.
FromString
([]
byte
(
tt
.
input
))
result
,
ec
:=
dec
.
ToUint
()
result
,
ec
:=
dec
.
ToUint
()
assert
.
Equal
(
t
,
ec
,
tt
.
err
)
assert
.
Equal
(
t
,
ec
,
tt
.
err
)
...
@@ -135,7 +135,7 @@ func TestToFloat(t *testing.T) {
...
@@ -135,7 +135,7 @@ func TestToFloat(t *testing.T) {
{
"1234500009876.5"
,
1234500009876.5
},
{
"1234500009876.5"
,
1234500009876.5
},
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
_
=
dec
.
FromString
([]
byte
(
ca
.
s
))
_
=
dec
.
FromString
([]
byte
(
ca
.
s
))
f
,
_
:=
dec
.
ToFloat64
()
f
,
_
:=
dec
.
ToFloat64
()
assert
.
Equal
(
t
,
f
,
ca
.
f
)
assert
.
Equal
(
t
,
f
,
ca
.
f
)
...
@@ -159,7 +159,7 @@ func TestToHashKey(t *testing.T) {
...
@@ -159,7 +159,7 @@ func TestToHashKey(t *testing.T) {
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
keys
:=
make
([]
string
,
0
,
len
(
ca
.
numbers
))
keys
:=
make
([]
string
,
0
,
len
(
ca
.
numbers
))
for
_
,
num
:=
range
ca
.
numbers
{
for
_
,
num
:=
range
ca
.
numbers
{
var
dec
Big
Decimal
var
dec
Decimal
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
num
)),
nil
)
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
num
)),
nil
)
key
,
err
:=
dec
.
ToHashKey
()
key
,
err
:=
dec
.
ToHashKey
()
assert
.
Equal
(
t
,
err
,
nil
)
assert
.
Equal
(
t
,
err
,
nil
)
...
@@ -195,14 +195,14 @@ func TestToHashKey(t *testing.T) {
...
@@ -195,14 +195,14 @@ func TestToHashKey(t *testing.T) {
for
_
,
ca
:=
range
binTests
{
for
_
,
ca
:=
range
binTests
{
keys
:=
make
([]
string
,
0
,
len
(
ca
.
hashNumbers
)
+
len
(
ca
.
binNumbers
))
keys
:=
make
([]
string
,
0
,
len
(
ca
.
hashNumbers
)
+
len
(
ca
.
binNumbers
))
for
_
,
num
:=
range
ca
.
hashNumbers
{
for
_
,
num
:=
range
ca
.
hashNumbers
{
var
dec
Big
Decimal
var
dec
Decimal
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
num
)),
nil
)
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
num
)),
nil
)
key
,
err
:=
dec
.
ToHashKey
()
key
,
err
:=
dec
.
ToHashKey
()
assert
.
Equal
(
t
,
err
,
nil
)
assert
.
Equal
(
t
,
err
,
nil
)
keys
=
append
(
keys
,
string
(
key
))
keys
=
append
(
keys
,
string
(
key
))
}
}
for
_
,
num
:=
range
ca
.
binNumbers
{
for
_
,
num
:=
range
ca
.
binNumbers
{
var
dec
Big
Decimal
var
dec
Decimal
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
num
)),
nil
)
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
num
)),
nil
)
prec
,
frac
:=
dec
.
PrecisionAndFrac
()
// remove leading zeros but trailing zeros remain
prec
,
frac
:=
dec
.
PrecisionAndFrac
()
// remove leading zeros but trailing zeros remain
key
,
err
:=
dec
.
ToBin
(
prec
,
frac
)
key
,
err
:=
dec
.
ToBin
(
prec
,
frac
)
...
@@ -226,7 +226,7 @@ func TestRemoveTrailingZeros(t *testing.T) {
...
@@ -226,7 +226,7 @@ func TestRemoveTrailingZeros(t *testing.T) {
"123987654321.123456789000"
,
"000000000123"
,
"123456789.987654321"
,
"999.999000"
,
"123987654321.123456789000"
,
"000000000123"
,
"123456789.987654321"
,
"999.999000"
,
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
ca
)),
nil
)
assert
.
Equal
(
t
,
dec
.
FromString
([]
byte
(
ca
)),
nil
)
// calculate the number of digits after point but trailing zero
// calculate the number of digits after point but trailing zero
...
@@ -258,7 +258,7 @@ func TestShift(t *testing.T) {
...
@@ -258,7 +258,7 @@ func TestShift(t *testing.T) {
}
}
var
dotest
=
func
(
t
*
testing
.
T
,
tests
[]
tcase
)
{
var
dotest
=
func
(
t
*
testing
.
T
,
tests
[]
tcase
)
{
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
//assert.Equal(t, err, IsNil)
//assert.Equal(t, err, IsNil)
//origin := dec
//origin := dec
...
@@ -389,9 +389,9 @@ func TestRoundWithHalfEven(t *testing.T) {
...
@@ -389,9 +389,9 @@ func TestRoundWithHalfEven(t *testing.T) {
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
dec
.
FromString
([]
byte
(
ca
.
input
))
dec
.
FromString
([]
byte
(
ca
.
input
))
var
rounded
Big
Decimal
var
rounded
Decimal
err
:=
dec
.
Round
(
&
rounded
,
ca
.
scale
,
ModeHalfEven
)
err
:=
dec
.
Round
(
&
rounded
,
ca
.
scale
,
ModeHalfEven
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
result
:=
rounded
.
ToString
()
result
:=
rounded
.
ToString
()
...
@@ -423,9 +423,9 @@ func TestRoundWithTruncate(t *testing.T) {
...
@@ -423,9 +423,9 @@ func TestRoundWithTruncate(t *testing.T) {
{
"999999999"
,
-
9
,
"0"
,
nil
},
{
"999999999"
,
-
9
,
"0"
,
nil
},
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
dec
.
FromString
([]
byte
(
ca
.
input
))
dec
.
FromString
([]
byte
(
ca
.
input
))
var
rounded
Big
Decimal
var
rounded
Decimal
err
:=
dec
.
Round
(
&
rounded
,
ca
.
scale
,
ModeTruncate
)
err
:=
dec
.
Round
(
&
rounded
,
ca
.
scale
,
ModeTruncate
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
result
:=
rounded
.
ToString
()
result
:=
rounded
.
ToString
()
...
@@ -458,9 +458,9 @@ func TestRoundWithCeil(t *testing.T) {
...
@@ -458,9 +458,9 @@ func TestRoundWithCeil(t *testing.T) {
{
"999999999"
,
-
9
,
"1000000000"
,
nil
},
{
"999999999"
,
-
9
,
"1000000000"
,
nil
},
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
dec
.
FromString
([]
byte
(
ca
.
input
))
dec
.
FromString
([]
byte
(
ca
.
input
))
var
rounded
Big
Decimal
var
rounded
Decimal
err
:=
dec
.
Round
(
&
rounded
,
ca
.
scale
,
modeCeiling
)
err
:=
dec
.
Round
(
&
rounded
,
ca
.
scale
,
modeCeiling
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
result
:=
rounded
.
ToString
()
result
:=
rounded
.
ToString
()
...
@@ -485,7 +485,7 @@ func TestFromString(t *testing.T) {
...
@@ -485,7 +485,7 @@ func TestFromString(t *testing.T) {
{
"1e -1"
,
"0.1"
,
nil
},
{
"1e -1"
,
"0.1"
,
nil
},
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
if
err
!=
nil
{
if
err
!=
nil
{
assert
.
Equal
(
t
,
err
,
ca
.
err
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
...
@@ -499,7 +499,7 @@ func TestFromString(t *testing.T) {
...
@@ -499,7 +499,7 @@ func TestFromString(t *testing.T) {
{
"123450.000098765"
,
"123450"
,
ErrTruncated
},
{
"123450.000098765"
,
"123450"
,
ErrTruncated
},
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
assert
.
Equal
(
t
,
err
,
ca
.
err
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
result
:=
string
(
dec
.
ToString
())
result
:=
string
(
dec
.
ToString
())
...
@@ -519,7 +519,7 @@ func TestToString(t *testing.T) {
...
@@ -519,7 +519,7 @@ func TestToString(t *testing.T) {
{
"00123.123"
,
"123.123"
},
{
"00123.123"
,
"123.123"
},
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
_
=
dec
.
FromString
([]
byte
(
ca
.
input
))
_
=
dec
.
FromString
([]
byte
(
ca
.
input
))
result
:=
dec
.
ToString
()
result
:=
dec
.
ToString
()
assert
.
Equal
(
t
,
string
(
result
),
ca
.
output
)
assert
.
Equal
(
t
,
string
(
result
),
ca
.
output
)
...
@@ -552,18 +552,18 @@ func TestToBinFromBin(t *testing.T) {
...
@@ -552,18 +552,18 @@ func TestToBinFromBin(t *testing.T) {
{
"1000"
,
3
,
0
,
"0"
,
ErrOverflow
},
{
"1000"
,
3
,
0
,
"0"
,
ErrOverflow
},
}
}
for
_
,
ca
:=
range
tests
{
for
_
,
ca
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
err
:=
dec
.
FromString
([]
byte
(
ca
.
input
))
assert
.
Equal
(
t
,
err
,
nil
)
assert
.
Equal
(
t
,
err
,
nil
)
buf
,
err
:=
dec
.
ToBin
(
ca
.
precision
,
ca
.
frac
)
buf
,
err
:=
dec
.
ToBin
(
ca
.
precision
,
ca
.
frac
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
assert
.
Equal
(
t
,
err
,
ca
.
err
)
var
dec2
Big
Decimal
var
dec2
Decimal
_
,
err
=
dec2
.
FromBin
(
buf
,
ca
.
precision
,
ca
.
frac
)
_
,
err
=
dec2
.
FromBin
(
buf
,
ca
.
precision
,
ca
.
frac
)
assert
.
Equal
(
t
,
err
,
nil
)
assert
.
Equal
(
t
,
err
,
nil
)
str
:=
dec2
.
ToString
()
str
:=
dec2
.
ToString
()
assert
.
Equal
(
t
,
string
(
str
),
ca
.
output
)
assert
.
Equal
(
t
,
string
(
str
),
ca
.
output
)
}
}
var
dec
Big
Decimal
var
dec
Decimal
dec
.
FromInt
(
1
)
dec
.
FromInt
(
1
)
errTests
:=
[]
struct
{
errTests
:=
[]
struct
{
prec
int
prec
int
...
@@ -600,7 +600,7 @@ func TestCompare(t *testing.T) {
...
@@ -600,7 +600,7 @@ func TestCompare(t *testing.T) {
{
"1.1"
,
"1.2"
,
-
1
},
{
"1.1"
,
"1.2"
,
-
1
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
a
,
b
Big
Decimal
var
a
,
b
Decimal
_
=
a
.
FromString
([]
byte
(
tt
.
a
))
_
=
a
.
FromString
([]
byte
(
tt
.
a
))
_
=
b
.
FromString
([]
byte
(
tt
.
b
))
_
=
b
.
FromString
([]
byte
(
tt
.
b
))
assert
.
Equal
(
t
,
a
.
Compare
(
&
b
),
tt
.
cmp
)
assert
.
Equal
(
t
,
a
.
Compare
(
&
b
),
tt
.
cmp
)
...
@@ -631,7 +631,7 @@ func TestMaxDecimal(t *testing.T) {
...
@@ -631,7 +631,7 @@ func TestMaxDecimal(t *testing.T) {
{
40
,
20
,
"99999999999999999999.99999999999999999999"
},
{
40
,
20
,
"99999999999999999999.99999999999999999999"
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
dec
Big
Decimal
var
dec
Decimal
maxDecimal
(
tt
.
prec
,
tt
.
frac
,
&
dec
)
maxDecimal
(
tt
.
prec
,
tt
.
frac
,
&
dec
)
str
:=
dec
.
ToString
()
str
:=
dec
.
ToString
()
assert
.
Equal
(
t
,
string
(
str
),
tt
.
result
)
assert
.
Equal
(
t
,
string
(
str
),
tt
.
result
)
...
@@ -684,7 +684,7 @@ func TestAdd(t *testing.T) {
...
@@ -684,7 +684,7 @@ func TestAdd(t *testing.T) {
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
a
:=
NewDecFromStringForTest
(
tt
.
a
)
a
:=
NewDecFromStringForTest
(
tt
.
a
)
b
:=
NewDecFromStringForTest
(
tt
.
b
)
b
:=
NewDecFromStringForTest
(
tt
.
b
)
var
sum
Big
Decimal
var
sum
Decimal
err
:=
DecimalAdd
(
a
,
b
,
&
sum
)
err
:=
DecimalAdd
(
a
,
b
,
&
sum
)
assert
.
Equal
(
t
,
err
,
tt
.
err
)
assert
.
Equal
(
t
,
err
,
tt
.
err
)
result
:=
sum
.
ToString
()
result
:=
sum
.
ToString
()
...
@@ -716,7 +716,7 @@ func TestSub(t *testing.T) {
...
@@ -716,7 +716,7 @@ func TestSub(t *testing.T) {
{
"12345"
,
"-123.45"
,
"12468.45"
,
nil
},
{
"12345"
,
"-123.45"
,
"12468.45"
,
nil
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
a
,
b
,
sum
Big
Decimal
var
a
,
b
,
sum
Decimal
a
.
FromString
([]
byte
(
tt
.
a
))
a
.
FromString
([]
byte
(
tt
.
a
))
b
.
FromString
([]
byte
(
tt
.
b
))
b
.
FromString
([]
byte
(
tt
.
b
))
err
:=
DecimalSub
(
&
a
,
&
b
,
&
sum
)
err
:=
DecimalSub
(
&
a
,
&
b
,
&
sum
)
...
@@ -747,7 +747,7 @@ func TestMul(t *testing.T) {
...
@@ -747,7 +747,7 @@ func TestMul(t *testing.T) {
{
"0.5999991229317"
,
"0.918755041726042"
,
"0.5512522192247026369112773314"
,
nil
},
{
"0.5999991229317"
,
"0.918755041726042"
,
"0.5512522192247026369112773314"
,
nil
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
a
,
b
,
product
Big
Decimal
var
a
,
b
,
product
Decimal
a
.
FromString
([]
byte
(
tt
.
a
))
a
.
FromString
([]
byte
(
tt
.
a
))
b
.
FromString
([]
byte
(
tt
.
b
))
b
.
FromString
([]
byte
(
tt
.
b
))
err
:=
DecimalMul
(
&
a
,
&
b
,
&
product
)
err
:=
DecimalMul
(
&
a
,
&
b
,
&
product
)
...
@@ -782,7 +782,7 @@ func TestDivMod(t *testing.T) {
...
@@ -782,7 +782,7 @@ func TestDivMod(t *testing.T) {
{
"51"
,
"0.003430"
,
"14868.804664723032069970"
,
nil
},
{
"51"
,
"0.003430"
,
"14868.804664723032069970"
,
nil
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
a
,
b
,
to
Big
Decimal
var
a
,
b
,
to
Decimal
a
.
FromString
([]
byte
(
tt
.
a
))
a
.
FromString
([]
byte
(
tt
.
a
))
b
.
FromString
([]
byte
(
tt
.
b
))
b
.
FromString
([]
byte
(
tt
.
b
))
err
:=
doDivMod
(
&
a
,
&
b
,
&
to
,
nil
,
5
)
err
:=
doDivMod
(
&
a
,
&
b
,
&
to
,
nil
,
5
)
...
@@ -804,7 +804,7 @@ func TestDivMod(t *testing.T) {
...
@@ -804,7 +804,7 @@ func TestDivMod(t *testing.T) {
{
"0.0000000001"
,
"1.0"
,
"0.0000000001"
,
nil
},
{
"0.0000000001"
,
"1.0"
,
"0.0000000001"
,
nil
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
a
,
b
,
to
Big
Decimal
var
a
,
b
,
to
Decimal
a
.
FromString
([]
byte
(
tt
.
a
))
a
.
FromString
([]
byte
(
tt
.
a
))
b
.
FromString
([]
byte
(
tt
.
b
))
b
.
FromString
([]
byte
(
tt
.
b
))
ec
:=
doDivMod
(
&
a
,
&
b
,
nil
,
&
to
,
0
)
ec
:=
doDivMod
(
&
a
,
&
b
,
nil
,
&
to
,
0
)
...
@@ -824,7 +824,7 @@ func TestDivMod(t *testing.T) {
...
@@ -824,7 +824,7 @@ func TestDivMod(t *testing.T) {
{
"51"
,
"0.003430"
,
"14868.8047"
,
nil
},
{
"51"
,
"0.003430"
,
"14868.8047"
,
nil
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
a
,
b
,
to
Big
Decimal
var
a
,
b
,
to
Decimal
a
.
FromString
([]
byte
(
tt
.
a
))
a
.
FromString
([]
byte
(
tt
.
a
))
b
.
FromString
([]
byte
(
tt
.
b
))
b
.
FromString
([]
byte
(
tt
.
b
))
ec
:=
DecimalDiv
(
&
a
,
&
b
,
&
to
,
DivFracIncr
)
ec
:=
DecimalDiv
(
&
a
,
&
b
,
&
to
,
DivFracIncr
)
...
@@ -842,10 +842,10 @@ func TestDivMod(t *testing.T) {
...
@@ -842,10 +842,10 @@ func TestDivMod(t *testing.T) {
{
"51"
,
"0.003430"
,
"0.002760"
,
nil
},
{
"51"
,
"0.003430"
,
"0.002760"
,
nil
},
}
}
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
var
a
,
b
,
to
BigDecimal
var
a
,
b
,
to
Decimal
a
.
FromString
([]
byte
(
tt
.
a
))
b
.
FromString
([]
byte
(
tt
.
b
))
ec
:=
DecimalMod
(
&
a
,
&
b
,
&
to
)
ec
:=
DecimalMod
(
&
a
,
&
b
,
&
to
)
_
=
a
.
FromString
([]
byte
(
tt
.
a
))
_
=
b
.
FromString
([]
byte
(
tt
.
b
))
assert
.
Equal
(
t
,
ec
,
tt
.
err
)
assert
.
Equal
(
t
,
ec
,
tt
.
err
)
if
tt
.
err
==
ErrDivByZero
{
if
tt
.
err
==
ErrDivByZero
{
continue
continue
...
@@ -885,9 +885,9 @@ func benchmarkBigDecimalToBinOrHashCases() []string {
...
@@ -885,9 +885,9 @@ func benchmarkBigDecimalToBinOrHashCases() []string {
func
BenchmarkBigDecimalToBin
(
b
*
testing
.
B
)
{
func
BenchmarkBigDecimalToBin
(
b
*
testing
.
B
)
{
cases
:=
benchmarkBigDecimalToBinOrHashCases
()
cases
:=
benchmarkBigDecimalToBinOrHashCases
()
decs
:=
make
([]
*
Big
Decimal
,
0
,
len
(
cases
))
decs
:=
make
([]
*
Decimal
,
0
,
len
(
cases
))
for
_
,
ca
:=
range
cases
{
for
_
,
ca
:=
range
cases
{
var
dec
Big
Decimal
var
dec
Decimal
if
err
:=
dec
.
FromString
([]
byte
(
ca
));
err
!=
nil
{
if
err
:=
dec
.
FromString
([]
byte
(
ca
));
err
!=
nil
{
b
.
Fatal
(
err
)
b
.
Fatal
(
err
)
}
}
...
@@ -908,9 +908,9 @@ func BenchmarkBigDecimalToBin(b *testing.B) {
...
@@ -908,9 +908,9 @@ func BenchmarkBigDecimalToBin(b *testing.B) {
func
BenchmarkBigDecimalToHashKey
(
b
*
testing
.
B
)
{
func
BenchmarkBigDecimalToHashKey
(
b
*
testing
.
B
)
{
cases
:=
benchmarkBigDecimalToBinOrHashCases
()
cases
:=
benchmarkBigDecimalToBinOrHashCases
()
decs
:=
make
([]
*
Big
Decimal
,
0
,
len
(
cases
))
decs
:=
make
([]
*
Decimal
,
0
,
len
(
cases
))
for
_
,
ca
:=
range
cases
{
for
_
,
ca
:=
range
cases
{
var
dec
Big
Decimal
var
dec
Decimal
if
err
:=
dec
.
FromString
([]
byte
(
ca
));
err
!=
nil
{
if
err
:=
dec
.
FromString
([]
byte
(
ca
));
err
!=
nil
{
b
.
Fatal
(
err
)
b
.
Fatal
(
err
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment