Round float to integer value
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
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 common tasks is a collection of handy code examples.
Share:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK