Ce face Iterable.average
average() adună elementele și împarte la numărul lor. Rezultatul este întotdeauna Double, chiar dacă elementele sunt Int, deci nu pierzi zecimalele ca la împărțirea întreagă.
Pentru o colecție goală rezultatul este NaN (Not a Number), nu o eroare. Verifică isEmpty() înainte sau testează rezultatul cu isNaN().
Pentru media unui câmp dintr-o listă de obiecte, extrage întâi valorile: elevi.map { it.nota }.average().
Ce returnează
Media ca Double; NaN dacă nu există elemente.
Exemple
Exemplul 1: Media notelor
Notele sunt Int, dar media are zecimale. Rotunjim la două zecimale cu Math.round.
fun main() {
val note = listOf(9, 10, 7, 8)
val media = note.average()
println("Media: $media")
val alte = listOf(10, 9, 9)
val m = alte.average()
println("Media exactă: $m")
println("Rotunjită: ${Math.round(m * 100) / 100.0}")
}
Rezultat
Media: 8.5
Media exactă: 9.333333333333334
Rotunjită: 9.33
Exemplul 2: Media unui câmp și lista goală
Extragem temperaturile cu map, apoi facem media. O listă fără elemente dă NaN, pe care îl tratăm separat.
data class Zi(val nume: String, val grade: Double)
fun main() {
val saptamana = listOf(Zi("luni", 18.5), Zi("marți", 21.0), Zi("miercuri", 19.5))
println("Temperatura medie: ${saptamana.map { it.grade }.average()} °C")
val fara = emptyList<Double>()
val m = fara.average()
println(if (m.isNaN()) "Nu avem măsurători" else "Media: $m")
}
Rezultat
Temperatura medie: 19.666666666666668 °C
Nu avem măsurători
Greșeli frecvente
- Calculezi media cu
note.sum() / note.size: ambele suntInt, așa că zecimalele se pierd (26 / 3 = 8).average()întoarce corect8.666.... - Afișezi media unei liste goale și apare
NaN. Verifică lista înainte.
Comenzi înrudite
Iterable.sum: Adună toate numerele dintr-o listă, mulțime sau tablou și întoarce totalul.Iterable.sumOf: Adună valoarea calculată de o funcție pentru fiecare element, de exemplu prețul fiecărui produs din coș.Iterable.max: Găsește cel mai mare (max) sau cel mai mic (min) element; variantele OrNull întorc null pentru o colecție goală.Iterable.count: Numără elementele colecției sau doar pe cele care îndeplinesc o condiție.