5

Round float to integer value

 3 years ago
source link: https://yourbasic.org/golang/round-float-to-int/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Round float to integer value

yourbasic.org/golang

Round away from zeroGo 1.10

Use math.Round to return the nearest integer, as a float64, rounding ties away from zero.

fmt.Println(math.Round(-0.6)) // -1
fmt.Println(math.Round(-0.4)) // -0
fmt.Println(math.Round(0.4))  // 0
fmt.Println(math.Round(0.6))  // 1

Note the special cases.

Round(±0) = ±0
Round(±Inf) = ±Inf
Round(NaN) = NaN

Round to even numberGo 1.10

Use math.RoundToEven to return the nearest integer, as a float64, rounding ties to an even number.

fmt.Println(math.RoundToEven(0.5)) // 0
fmt.Println(math.RoundToEven(1.5)) // 2

Convert to an int type

Note that when converting a floating-point number to an int type, the fraction is discarded (truncation towards zero).

fmt.Println(int64(1.9))  //  1
fmt.Println(int64(-1.9)) // -1

Warning: If the result type cannot represent the value the conversion succeeds but the result is implementation-dependent.

Before Go 1.10

The following implementations are equivalent to math.Round and math.RoundToEven, but less efficient.

// Round returns the nearest integer, rounding ties away from zero.
func Round(x float64) float64 {
    t := math.Trunc(x)
    if math.Abs(x-t) >= 0.5 {
        return t + math.Copysign(1, x)
    }
    return t
}
// RoundToEven returns the nearest integer, rounding ties to an even number.
func RoundToEven(x float64) float64 {
    t := math.Trunc(x)
    odd := math.Remainder(t, 2) != 0
    if d := math.Abs(x - t); d > 0.5 || (d == 0.5 && odd) {
        return t + math.Copysign(1, x)
    }
    return t
}

More code examples

Go blueprints: code for com­mon tasks is a collection of handy code examples.

Share:             


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK