mirror of
https://github.com/golang/go
synced 2024-11-12 10:00:25 -07:00
big: added RatString, some simplifications
R=rsc CC=golang-dev https://golang.org/cl/2095041
This commit is contained in:
parent
3ad995ea88
commit
9f46962c3b
@ -269,29 +269,34 @@ func (z *Rat) SetString(s string) (*Rat, bool) {
|
||||
}
|
||||
|
||||
|
||||
// String returns a string representation of z in the form "a/b".
|
||||
// String returns a string representation of z in the form "a/b" (even if b == 1).
|
||||
func (z *Rat) String() string {
|
||||
s := z.a.String()
|
||||
if len(z.b) == 1 && z.b[0] == 1 {
|
||||
return s
|
||||
return z.a.String() + "/" + z.b.string(10)
|
||||
}
|
||||
|
||||
|
||||
// RatString returns a string representation of z in the form "a/b" if b != 1,
|
||||
// and in the form "a" if b == 1.
|
||||
func (z *Rat) RatString() string {
|
||||
if z.IsInt() {
|
||||
return z.a.String()
|
||||
}
|
||||
return s + "/" + z.b.string(10)
|
||||
return z.String()
|
||||
}
|
||||
|
||||
|
||||
// FloatString returns a string representation of z in decimal form with prec
|
||||
// digits of precision after the decimal point and the last digit rounded.
|
||||
func (z *Rat) FloatString(prec int) string {
|
||||
if z.IsInt() {
|
||||
return z.a.String()
|
||||
}
|
||||
|
||||
q, r := nat{}.div(nat{}, z.a.abs, z.b)
|
||||
|
||||
s := ""
|
||||
s := q.string(10)
|
||||
if z.a.neg {
|
||||
s = "-"
|
||||
}
|
||||
s += q.string(10)
|
||||
|
||||
if len(z.b) == 1 && z.b[0] == 1 {
|
||||
return s
|
||||
s = "-" + s
|
||||
}
|
||||
|
||||
p := nat{}.expNN(natTen, nat{Word(prec)}, nil)
|
||||
|
@ -48,8 +48,8 @@ func TestRatSetString(t *testing.T) {
|
||||
for i, test := range setStringTests {
|
||||
x, ok := new(Rat).SetString(test.in)
|
||||
|
||||
if ok != test.ok || ok && x.String() != test.out {
|
||||
t.Errorf("#%d got %s want %s", i, x.String(), test.out)
|
||||
if ok != test.ok || ok && x.RatString() != test.out {
|
||||
t.Errorf("#%d got %s want %s", i, x.RatString(), test.out)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user