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 undouble. Returneazăint; pentrudoublefoloseșteroundToDouble(). - Folosești
truncate()pentru „în jos” la numere negative. Pentru „în jos” corect foloseștefloor(). - Rotunjești la două zecimale cu
round().round()dă un întreg; pentru afișare cu zecimale foloseștetoStringAsFixed(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.