Ce face Double.roundToInt
9.5.roundToInt() returnează 10, ca Int. Spre deosebire de round(), la jumătate exactă rotunjește mereu în sus (spre plus infinit): 2.5 devine 3, iar -2.5 devine -2. Este rotunjirea pe care o folosim la note și medii.
Valorile prea mari pentru Int devin Int.MAX_VALUE (sau Int.MIN_VALUE), iar NaN aruncă IllegalArgumentException. Pentru numere mari folosește roundToLong(). Funcția trebuie importată din kotlin.math.
Ce returnează
Un Int (sau Long pentru roundToLong).
Exemple
Exemplul 1: Rotunjire față de toInt
toInt() taie zecimalele, roundToInt() rotunjește.
import kotlin.math.roundToInt
fun main() {
for (x in listOf(8.4, 8.5, 8.6, -2.5)) {
println("$x: toInt=${x.toInt()}, roundToInt=${x.roundToInt()}")
}
}
Rezultat
8.4: toInt=8, roundToInt=8
8.5: toInt=8, roundToInt=9
8.6: toInt=8, roundToInt=9
-2.5: toInt=-2, roundToInt=-2
Exemplul 2: Media finală a unui elev
Media 8.5 se rotunjește la 9, ca la școală.
import kotlin.math.roundToInt
fun main() {
val note = listOf(9, 8, 10, 7)
val media = note.average()
println("Media: $media")
println("Media rotunjită: ${media.roundToInt()}")
}
Rezultat
Media: 8.5
Media rotunjită: 9
Exemplul 3: Procente întregi
Rezultatul împărțirii devine procent întreg, potrivit pentru afișare.
import kotlin.math.roundToInt
fun main() {
val voturi = mapOf("Da" to 487, "Nu" to 312, "Abținere" to 54)
val total = voturi.values.sum()
for ((optiune, n) in voturi) {
println("$optiune: ${(n * 100.0 / total).roundToInt()}%")
}
}
Rezultat
Da: 57%
Nu: 37%
Abținere: 6%
Greșeli frecvente
- Uiți importul
kotlin.math.roundToIntși primeștiUnresolved reference. - Calculezi
(n * 100 / total).roundToInt()cu întregi: împărțirea întreagă dă deja unIntfără zecimale. Folosește100.0.
Comenzi înrudite
round: Rotunjesc un număr zecimal: round la cel mai apropiat întreg, floor în jos, ceil în sus, truncate taie zecimalele.Int.toDouble: Conversii explicite între tipurile numerice: toDouble face un Int zecimal, toInt taie zecimalele unui Double.