Compare commits

...

2 commits

Author SHA1 Message Date
Hassan Aminfar
a40884ce50
Merge 5d3a9828f2 into 645a76e5b0 2024-04-05 19:01:01 -04:00
Hassan Aminfar
5d3a9828f2
Add GoString method for Decimal and NullDecimal (#270) 2022-02-26 18:08:15 +03:30

View file

@ -1881,6 +1881,19 @@ func (d *Decimal) GobDecode(data []byte) error {
return d.UnmarshalBinary(data) return d.UnmarshalBinary(data)
} }
// GoString implements fmt.GoStringer and formats %#v to be printed in Go
// source code.
func (d *Decimal) GoString() string {
if d.value.IsInt64() {
return fmt.Sprintf("decimal.New(%d,%d)", d.value.Int64(), d.exp)
}
if d.value.Sign() < 0 {
return fmt.Sprintf("decimal.NewFromBigInt(new(big.Int).Neg(new(big.Int).SetBits(%#v)),%d)", d.value.Bits(), d.exp)
}
return fmt.Sprintf("decimal.NewFromBigInt(new(big.Int).SetBits(%#v),%d)", d.value.Bits(), d.exp)
}
// StringScaled first scales the decimal then calls .String() on it. // StringScaled first scales the decimal then calls .String() on it.
// //
// Deprecated: buggy and unintuitive. Use StringFixed instead. // Deprecated: buggy and unintuitive. Use StringFixed instead.
@ -2100,6 +2113,15 @@ func (d NullDecimal) MarshalText() (text []byte, err error) {
return d.Decimal.MarshalText() return d.Decimal.MarshalText()
} }
// GoString implements fmt.GoStringer and formats %#v to be printed in Go
// source code.
func (d NullDecimal) GoString() string {
if !d.Valid {
return "decimal.NullDecimal{Valid: false}"
}
return `decimal.NewNullDecimal(` + d.Decimal.GoString() + `)`
}
// Trig functions // Trig functions
// Atan returns the arctangent, in radians, of x. // Atan returns the arctangent, in radians, of x.