math/big: add example for RoundingMode

Updates #11241

Change-Id: I0614c5a9a7a4c399ad5d664f36c70c3210911905
Reviewed-on: https://go-review.googlesource.com/14356
Reviewed-by: Robert Griesemer <gri@golang.org>
diff --git a/src/math/big/floatexample_test.go b/src/math/big/floatexample_test.go
index 358776e..d135243 100644
--- a/src/math/big/floatexample_test.go
+++ b/src/math/big/floatexample_test.go
@@ -109,3 +109,34 @@
 	// +Inf   1.2    1
 	// +Inf  +Inf    0
 }
+
+func ExampleRoundingMode() {
+	operands := []float64{2.6, 2.5, 2.1, -2.1, -2.5, -2.6}
+
+	fmt.Printf("x   ")
+	for mode := big.ToNearestEven; mode <= big.ToPositiveInf; mode++ {
+		fmt.Printf(" %s", mode)
+	}
+	fmt.Println()
+
+	for _, f64 := range operands {
+		fmt.Printf("%4g", f64)
+		for mode := big.ToNearestEven; mode <= big.ToPositiveInf; mode++ {
+			// sample operands above require 2 bits to represent mantissa
+			// set binary precision to 2 to round them to integer values
+			f := new(big.Float).SetPrec(2).SetMode(mode).SetFloat64(f64)
+			format := fmt.Sprintf(" %%%dg", len(mode.String()))
+			fmt.Printf(format, f)
+		}
+		fmt.Println()
+	}
+
+	// Output:
+	// x    ToNearestEven ToNearestAway ToZero AwayFromZero ToNegativeInf ToPositiveInf
+	//  2.6             3             3      2            3             2             3
+	//  2.5             2             3      2            3             2             3
+	//  2.1             2             2      2            3             2             3
+	// -2.1            -2            -2     -2           -3            -3            -2
+	// -2.5            -2            -3     -2           -3            -3            -2
+	// -2.6            -3            -3     -2           -3            -3            -2
+}