Ce face math.Floor
math.Floor(x) returnează cel mai mare întreg mai mic sau egal cu x (rotunjire în jos). math.Ceil(x) returnează cel mai mic întreg mai mare sau egal cu x (rotunjire în sus). math.Trunc(x) șterge zecimalele, adică rotunjește spre zero.
Diferența apare la numerele negative: Floor(-2.7) este -3, dar Trunc(-2.7) este -2. Conversia int(x) se comportă ca Trunc.
Toate returnează tot float64. Dacă ai nevoie de întreg, faci conversia după rotunjire: int(math.Ceil(x)).
Parametri
| Parametru | Descriere |
|---|---|
x |
Numărul de rotunjit. |
Ce returnează
Un float64 cu valoare întreagă.
Exemple
Exemplul 1: Floor, Ceil și Trunc pe aceleași numere
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println("x Floor Ceil Trunc")
for _, x := range []float64{2.3, 2.7, -2.3, -2.7} {
fmt.Printf("%-6v %-6v %-5v %v\n", x, math.Floor(x), math.Ceil(x), math.Trunc(x))
}
}
Rezultat
x Floor Ceil Trunc
2.3 2 3 2
2.7 2 3 2
-2.3 -3 -2 -2
-2.7 -3 -2 -2
Exemplul 2: Câte mașini trebuie pentru o excursie
Pentru 23 de elevi și 4 locuri pe mașină ai nevoie de 6 mașini: rotunjești în sus cu Ceil.
package main
import (
"fmt"
"math"
)
func main() {
elevi, locuri := 23, 4
masini := int(math.Ceil(float64(elevi) / float64(locuri)))
fmt.Println("Mașini necesare:", masini)
pagini := int(math.Ceil(57.0 / 10.0))
fmt.Println("Pagini de rezultate:", pagini)
}
Rezultat
Mașini necesare: 6
Pagini de rezultate: 6
Greșeli frecvente
- Împarți doi întregi înainte de
Ceil:math.Ceil(float64(23 / 4))dă5, pentru că23 / 4este deja5. Convertește fiecare operand lafloat64. - Folosești
Floorpe numere negative când voiai doar să tai zecimalele: pentru asta existăTrunc.
Comenzi înrudite
math.Round: math.Round rotunjește la cel mai apropiat întreg (jumătățile se duc departe de zero); RoundToEven duce jumătățile la par.math.Mod: math.Mod și math.Remainder dau restul împărțirii pentru float64; math.Modf desparte un număr în parte întreagă și zecimală.math.Abs: Returnează valoarea absolută (modulul) unui număr float64: distanța lui față de zero, fără semn.