Compare commits

...

2 commits

Author SHA1 Message Date
cdpzyafk
f7b866f0bd
Merge 04b54abf9e into 57a340d853 2024-01-24 20:44:48 -07:00
terry
04b54abf9e use to determine whether it equals 0 or not.
r.Cmp(zeroInt) != 0 => r.Sign() != 0
2022-11-05 14:10:29 +08:00

View file

@ -948,7 +948,7 @@ func (d Decimal) IsInteger() bool {
q := new(big.Int).Set(d.value) q := new(big.Int).Set(d.value)
for z := abs(d.exp); z > 0; z-- { for z := abs(d.exp); z > 0; z-- {
q.QuoRem(q, tenInt, &r) q.QuoRem(q, tenInt, &r)
if r.Cmp(zeroInt) != 0 { if r.Sign() != 0 {
return false return false
} }
} }
@ -1210,7 +1210,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++ ret.exp++
if ret.value.Sign() < 0 && m.Cmp(zeroInt) != 0 { if ret.value.Sign() < 0 && m.Sign() != 0 {
ret.value.Add(ret.value, oneInt) ret.value.Add(ret.value, oneInt)
} }
@ -1412,7 +1412,7 @@ func (d Decimal) Ceil() Decimal {
exp.Exp(exp, big.NewInt(-int64(d.exp)), nil) exp.Exp(exp, big.NewInt(-int64(d.exp)), nil)
z, m := new(big.Int).DivMod(d.value, exp, new(big.Int)) z, m := new(big.Int).DivMod(d.value, exp, new(big.Int))
if m.Cmp(zeroInt) != 0 { if m.Sign() != 0 {
z.Add(z, oneInt) z.Add(z, oneInt)
} }
return Decimal{value: z, exp: 0} return Decimal{value: z, exp: 0}