Math.round în Java

round() rotunjește la cel mai apropiat întreg (.5 în sus); rint() rotunjește .5 spre numărul par și returnează double.

Sintaxă
static long round(double a)
static int round(float a)
static double rint(double a)

Ce face Math.round

Math.round(x) rotunjește la cel mai apropiat număr întreg. Când partea zecimală este exact .5, rotunjește în sus (spre plus infinit): 2.5 → 3, dar -2.5 → -2. Pentru double returnează un long, iar pentru float un int.

Math.rint(x) rotunjește tot la cel mai apropiat întreg, dar la .5 alege numărul par (rotunjirea „bancherului”): 2.5 → 2.0, 3.5 → 4.0. Returnează un double.

Pentru a rotunji la două zecimale cu round, înmulțești cu 100, rotunjești și împarți la 100.0. Pentru bani, unde fiecare ban contează, folosește BigDecimal cu setScale.

Parametri

Parametru Descriere
a Numărul rotunjit.

Ce returnează

round: long (sau int pentru float). rint: double cu valoare întreagă.

Exemple

Exemplul 1: round și rint pe aceleași valori

public class Main {
    public static void main(String[] args) {
        double[] valori = {2.4, 2.5, 3.5, -2.5, -2.6};
        for (double v : valori) {
            System.out.println(v + ": round=" + Math.round(v) + ", rint=" + Math.rint(v));
        }
    }
}

Rezultat

2.4: round=2, rint=2.0
2.5: round=3, rint=2.0
3.5: round=4, rint=4.0
-2.5: round=-2, rint=-2.0
-2.6: round=-3, rint=-3.0

Exemplul 2: Media rotunjită la două zecimale

public class Main {
    public static void main(String[] args) {
        int[] note = {9, 8, 10, 7, 9, 10};
        double suma = 0;
        for (int n : note) {
            suma += n;
        }
        double media = suma / note.length;
        System.out.println("Media exactă: " + media);
        System.out.println("Media: " + Math.round(media * 100) / 100.0);
        int notaFinala = (int) Math.round(media);
        System.out.println("Nota finală: " + notaFinala);
    }
}

Rezultat

Media exactă: 8.833333333333334
Media: 8.83
Nota finală: 9

Greșeli frecvente

  • Scrii int n = Math.round(x); cu x de tip double: round returnează long, deci ai nevoie de (int).
  • Împarți la 100 în loc de 100.0: Math.round(9.166 * 100) / 100 este o împărțire întreagă și dă 9.
  • Te aștepți ca Math.round(-2.5) să dea -3: dă -2, pentru că .5 se rotunjește mereu spre plus infinit.

Comenzi înrudite

  • Math.floor: floor() rotunjește în jos (spre minus infinit), ceil() rotunjește în sus (spre plus infinit); ambele returnează double.
  • Math.max: max() și min() aleg cel mai mare sau cel mai mic dintre două numere; clamp() încadrează o valoare între două limite.
  • String.format: Construiește un șir dintr-un șablon cu %s, %d, %.2f etc.; formatted() face același lucru pe șablon.
  • Math: Clasa cu funcții matematice gata făcute: rotunjiri, puteri, radicali, trigonometrie, minim/maxim și calcule întregi sigure.