Ce face round
Toate patru returnează tot un Double, dar fără parte zecimală. floor rotunjește în jos (spre minus infinit): floor(2.7) este 2.0, floor(-2.3) este -3.0. ceil rotunjește în sus: ceil(2.1) este 3.0. truncate taie zecimalele, adică merge spre zero: truncate(-2.7) este -2.0.
round alege întregul cel mai apropiat. La jumătate exactă (2.5, 3.5) alege numărul par: round(2.5) este 2.0, iar round(3.5) este 4.0 („rotunjirea bancherului”). Dacă vrei regula de la școală (jumătatea în sus) și un rezultat Int, folosește roundToInt().
Pentru a rotunji la două zecimale: round(x * 100) / 100, sau formatează la afișare cu "%.2f".format(x).
Parametri
| Parametru | Descriere |
|---|---|
x |
Numărul rotunjit. |
Ce returnează
Un Double fără zecimale.
Exemple
Exemplul 1: Cele patru rotunjiri
Diferențele se văd cel mai bine la numerele negative și la jumătăți.
import kotlin.math.ceil
import kotlin.math.floor
import kotlin.math.round
import kotlin.math.truncate
fun main() {
println("x round floor ceil truncate")
for (x in listOf(2.3, 2.5, 3.5, 2.7, -2.3, -2.7)) {
println("$x\t${round(x)}\t${floor(x)}\t${ceil(x)}\t${truncate(x)}")
}
}
Rezultat
x round floor ceil truncate
2.3 2.0 2.0 3.0 2.0
2.5 2.0 2.0 3.0 2.0
3.5 4.0 3.0 4.0 3.0
2.7 3.0 2.0 3.0 2.0
-2.3 -2.0 -3.0 -2.0 -2.0
-2.7 -3.0 -3.0 -2.0 -2.0
Exemplul 2: Câte autobuze sunt necesare
Chiar dacă rămân doar câțiva elevi, e nevoie de încă un autobuz: rotunjim în sus cu ceil.
import kotlin.math.ceil
fun main() {
val elevi = 130
val locuri = 50
val autobuze = ceil(elevi.toDouble() / locuri).toInt()
println("Pentru $elevi elevi sunt necesare $autobuze autobuze")
}
Rezultat
Pentru 130 elevi sunt necesare 3 autobuze
Exemplul 3: Rotunjire la două zecimale
Înmulțim cu 100, rotunjim, apoi împărțim înapoi.
import kotlin.math.round
fun main() {
val pret = 19.987
println(round(pret * 100) / 100)
val tva = 99.99 * 0.19
println(tva)
println(round(tva * 100) / 100)
}
Rezultat
19.99
18.9981
19.0
Greșeli frecvente
- Te aștepți ca
round(2.5)să dea 3.0. La jumătate, round alege numărul par (2.0);2.5.roundToInt()dă 3. - Folosești
toInt()pentru rotunjire. toInt doar taie zecimalele:2.9.toInt()este 2. - Calculezi
ceil(elevi / locuri)cu întregi. Împărțirea întreagă a tăiat deja zecimalele; convertește laDoubleînainte.
Comenzi înrudite
Double.roundToInt: Rotunjește un Double la cel mai apropiat Int; jumătățile (2.5) se rotunjesc în sus.Int.toDouble: Conversii explicite între tipurile numerice: toDouble face un Int zecimal, toInt taie zecimalele unui Double.String.format: Construiește un text după un șablon cu marcaje ca %d, %s, %.2f, de exemplu pentru numere cu două zecimale.