Math.floor în Java

floor() rotunjește în jos (spre minus infinit), ceil() rotunjește în sus (spre plus infinit); ambele returnează double.

Sintaxă
static double floor(double a)
static double ceil(double a)

Ce face Math.floor

Math.floor(x) returnează cel mai mare număr întreg care nu depășește x: 7.9 → 7.0. Math.ceil(x) returnează cel mai mic întreg care nu este sub x: 7.1 → 8.0. Pentru numere negative, „în jos” înseamnă mai departe de zero: floor(-2.3) este -3.0.

Ambele returnează double, chiar dacă valoarea este întreagă. Pentru un int folosește conversia (int) Math.ceil(x). Atenție: conversia directă (int) x taie zecimalele spre zero, ceea ce diferă de floor la numerele negative.

Parametri

Parametru Descriere
a Numărul rotunjit.

Ce returnează

Un double cu valoare întreagă.

Exemple

Exemplul 1: floor, ceil și conversia (int)

public class Main {
    public static void main(String[] args) {
        double[] valori = {7.9, 7.1, -2.3, 5.0};
        for (double v : valori) {
            System.out.println(v + ": floor=" + Math.floor(v) + ", ceil=" + Math.ceil(v) + ", (int)=" + (int) v);
        }
    }
}

Rezultat

7.9: floor=7.0, ceil=8.0, (int)=7
7.1: floor=7.0, ceil=8.0, (int)=7
-2.3: floor=-3.0, ceil=-2.0, (int)=-2
5.0: floor=5.0, ceil=5.0, (int)=5

Exemplul 2: Câte autocare sunt necesare

Chiar și un singur elev în plus cere un autocar în plus, deci rotunjim în sus.

public class Main {
    public static void main(String[] args) {
        int elevi = 125;
        int locuri = 50;
        int autocare = (int) Math.ceil((double) elevi / locuri);
        System.out.println("Autocare: " + autocare);
        int pline = (int) Math.floor((double) elevi / locuri);
        System.out.println("Autocare complet ocupate: " + pline);
    }
}

Rezultat

Autocare: 3
Autocare complet ocupate: 2

Greșeli frecvente

  • Scrii Math.ceil(elevi / locuri) cu două int-uri: împărțirea întreagă se face întâi (125 / 50 = 2), iar ceil(2) rămâne 2. Convertește la double înainte sau folosește Math.ceilDiv.
  • Folosești (int) x ca rotunjire în jos pentru numere negative: (int) -2.3 dă -2, nu -3.

Comenzi înrudite

  • Math.round: round() rotunjește la cel mai apropiat întreg (.5 în sus); rint() rotunjește .5 spre numărul par și returnează double.
  • Math.floorDiv: Împărțire întreagă rotunjită în jos (floorDiv) sau în sus (ceilDiv), cu restul potrivit (floorMod, ceilMod).
  • Math: Clasa cu funcții matematice gata făcute: rotunjiri, puteri, radicali, trigonometrie, minim/maxim și calcule întregi sigure.