1package inf_test 2 3import ( 4 "fmt" 5 "os" 6 "text/tabwriter" 7 8 "gopkg.in/inf.v0" 9) 10 11// This example displays the results of Dec.Round with each of the Rounders. 12// 13func ExampleRounder() { 14 var vals = []struct { 15 x string 16 s inf.Scale 17 }{ 18 {"-0.18", 1}, {"-0.15", 1}, {"-0.12", 1}, {"-0.10", 1}, 19 {"-0.08", 1}, {"-0.05", 1}, {"-0.02", 1}, {"0.00", 1}, 20 {"0.02", 1}, {"0.05", 1}, {"0.08", 1}, {"0.10", 1}, 21 {"0.12", 1}, {"0.15", 1}, {"0.18", 1}, 22 } 23 24 var rounders = []struct { 25 name string 26 rounder inf.Rounder 27 }{ 28 {"RoundDown", inf.RoundDown}, {"RoundUp", inf.RoundUp}, 29 {"RoundCeil", inf.RoundCeil}, {"RoundFloor", inf.RoundFloor}, 30 {"RoundHalfDown", inf.RoundHalfDown}, {"RoundHalfUp", inf.RoundHalfUp}, 31 {"RoundHalfEven", inf.RoundHalfEven}, {"RoundExact", inf.RoundExact}, 32 } 33 34 fmt.Println("The results of new(inf.Dec).Round(x, s, inf.RoundXXX):") 35 fmt.Println() 36 w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', tabwriter.AlignRight) 37 fmt.Fprint(w, "x\ts\t|\t") 38 for _, r := range rounders { 39 fmt.Fprintf(w, "%s\t", r.name[5:]) 40 } 41 fmt.Fprintln(w) 42 for _, v := range vals { 43 fmt.Fprintf(w, "%s\t%d\t|\t", v.x, v.s) 44 for _, r := range rounders { 45 x, _ := new(inf.Dec).SetString(v.x) 46 z := new(inf.Dec).Round(x, v.s, r.rounder) 47 fmt.Fprintf(w, "%d\t", z) 48 } 49 fmt.Fprintln(w) 50 } 51 w.Flush() 52 53 // Output: 54 // The results of new(inf.Dec).Round(x, s, inf.RoundXXX): 55 // 56 // x s | Down Up Ceil Floor HalfDown HalfUp HalfEven Exact 57 // -0.18 1 | -0.1 -0.2 -0.1 -0.2 -0.2 -0.2 -0.2 <nil> 58 // -0.15 1 | -0.1 -0.2 -0.1 -0.2 -0.1 -0.2 -0.2 <nil> 59 // -0.12 1 | -0.1 -0.2 -0.1 -0.2 -0.1 -0.1 -0.1 <nil> 60 // -0.10 1 | -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 61 // -0.08 1 | 0.0 -0.1 0.0 -0.1 -0.1 -0.1 -0.1 <nil> 62 // -0.05 1 | 0.0 -0.1 0.0 -0.1 0.0 -0.1 0.0 <nil> 63 // -0.02 1 | 0.0 -0.1 0.0 -0.1 0.0 0.0 0.0 <nil> 64 // 0.00 1 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 65 // 0.02 1 | 0.0 0.1 0.1 0.0 0.0 0.0 0.0 <nil> 66 // 0.05 1 | 0.0 0.1 0.1 0.0 0.0 0.1 0.0 <nil> 67 // 0.08 1 | 0.0 0.1 0.1 0.0 0.1 0.1 0.1 <nil> 68 // 0.10 1 | 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 69 // 0.12 1 | 0.1 0.2 0.2 0.1 0.1 0.1 0.1 <nil> 70 // 0.15 1 | 0.1 0.2 0.2 0.1 0.1 0.2 0.2 <nil> 71 // 0.18 1 | 0.1 0.2 0.2 0.1 0.2 0.2 0.2 <nil> 72 73} 74