int.round în Dart

Metodele de rotunjire din num: pe un int returnează chiar numărul; pe un double dau cel mai apropiat întreg.

Sintaxă
int round()
int ceil()
int floor()
int truncate()

Ce face int.round

round(), ceil(), floor() și truncate() sunt definite în num, deci există și pe int, și pe double. Pe un int nu au ce rotunji: returnează chiar numărul. Sunt utile când ai o variabilă de tip num și vrei sigur un int.

Pe un double (sau num) toate returnează un int: round() rotunjește la cel mai apropiat întreg (la jumătate, departe de zero: 2.5 → 3, -2.5 → -3); ceil() rotunjește în sus; floor() în jos; truncate() taie zecimalele (spre zero).

Diferența dintre floor și truncate apare la numere negative: (-2.7).floor() este -3, iar (-2.7).truncate() este -2. Pe double, valorile NaN și infinit aruncă UnsupportedError. Dacă vrei rezultatul tot ca double, vezi roundToDouble.

Ce returnează

Un int.

Exemple

Exemplul 1: Cele patru rotunjiri

void main() {
  for (var x in [2.3, 2.5, 2.7, -2.5, -2.7]) {
    print('$x: round=${x.round()} ceil=${x.ceil()} floor=${x.floor()} truncate=${x.truncate()}');
  }
  print(7.round());
}

Rezultat

2.3: round=2 ceil=3 floor=2 truncate=2
2.5: round=3 ceil=3 floor=2 truncate=2
2.7: round=3 ceil=3 floor=2 truncate=2
-2.5: round=-3 ceil=-2 floor=-3 truncate=-2
-2.7: round=-3 ceil=-2 floor=-3 truncate=-2
7

Exemplul 2: Câte cutii îmi trebuie?

Pentru „câte pachete întregi” rotunjești în sus cu ceil; pentru „câte pachete pline” în jos, cu floor.

void main() {
  var oua = 50;
  var peCutie = 12;
  num cutiiExact = oua / peCutie;
  print('Exact: ${cutiiExact.toStringAsFixed(2)}');
  print('Cutii necesare: ${cutiiExact.ceil()}');
  print('Cutii pline: ${cutiiExact.floor()}');
  num nota = 9;
  print('Nota rotunjită: ${nota.round()}');
}

Rezultat

Exact: 4.17
Cutii necesare: 5
Cutii pline: 4
Nota rotunjită: 9

Greșeli frecvente

  • Te aștepți ca round() să dea un double. Returnează int; pentru double folosește roundToDouble().
  • Folosești truncate() pentru „în jos” la numere negative. Pentru „în jos” corect folosește floor().
  • Rotunjești la două zecimale cu round(). round() dă un întreg; pentru afișare cu zecimale folosește toStringAsFixed(2).

Comenzi înrudite

  • double.roundToDouble: Rotunjesc un double (la cel mai apropiat, în jos, în sus), dar rezultatul rămâne double.
  • double.toInt: toInt() transformă un număr în int tăind zecimalele; toDouble() transformă un int în double.
  • num: Tipul comun pentru int și double: o variabilă num poate ține orice număr.
  • int.toString: toString() transformă numărul în text; toStringAsFixed(n) îl scrie cu exact n zecimale.