Commit e216735d authored by Konstantin Shaposhnikov's avatar Konstantin Shaposhnikov Committed by Robert Griesemer

math/big: add example for RoundingMode

Updates #11241

Change-Id: I0614c5a9a7a4c399ad5d664f36c70c3210911905
Reviewed-on: https://go-review.googlesource.com/14356Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
parent b0344e9f
...@@ -109,3 +109,34 @@ func ExampleFloat_Cmp() { ...@@ -109,3 +109,34 @@ func ExampleFloat_Cmp() {
// +Inf 1.2 1 // +Inf 1.2 1
// +Inf +Inf 0 // +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
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment