1package inf_test 2 3import ( 4 "fmt" 5 "log" 6) 7 8import "gopkg.in/inf.v0" 9 10func ExampleDec_SetString() { 11 d := new(inf.Dec) 12 d.SetString("012345.67890") // decimal; leading 0 ignored; trailing 0 kept 13 fmt.Println(d) 14 // Output: 12345.67890 15} 16 17func ExampleDec_Scan() { 18 // The Scan function is rarely used directly; 19 // the fmt package recognizes it as an implementation of fmt.Scanner. 20 d := new(inf.Dec) 21 _, err := fmt.Sscan("184467440.73709551617", d) 22 if err != nil { 23 log.Println("error scanning value:", err) 24 } else { 25 fmt.Println(d) 26 } 27 // Output: 184467440.73709551617 28} 29 30func ExampleDec_QuoRound_scale2RoundDown() { 31 // 10 / 3 is an infinite decimal; it has no exact Dec representation 32 x, y := inf.NewDec(10, 0), inf.NewDec(3, 0) 33 // use 2 digits beyond the decimal point, round towards 0 34 z := new(inf.Dec).QuoRound(x, y, 2, inf.RoundDown) 35 fmt.Println(z) 36 // Output: 3.33 37} 38 39func ExampleDec_QuoRound_scale2RoundCeil() { 40 // -42 / 400 is an finite decimal with 3 digits beyond the decimal point 41 x, y := inf.NewDec(-42, 0), inf.NewDec(400, 0) 42 // use 2 digits beyond decimal point, round towards positive infinity 43 z := new(inf.Dec).QuoRound(x, y, 2, inf.RoundCeil) 44 fmt.Println(z) 45 // Output: -0.10 46} 47 48func ExampleDec_QuoExact_ok() { 49 // 1 / 25 is a finite decimal; it has exact Dec representation 50 x, y := inf.NewDec(1, 0), inf.NewDec(25, 0) 51 z := new(inf.Dec).QuoExact(x, y) 52 fmt.Println(z) 53 // Output: 0.04 54} 55 56func ExampleDec_QuoExact_fail() { 57 // 1 / 3 is an infinite decimal; it has no exact Dec representation 58 x, y := inf.NewDec(1, 0), inf.NewDec(3, 0) 59 z := new(inf.Dec).QuoExact(x, y) 60 fmt.Println(z) 61 // Output: <nil> 62} 63