round în Kotlin

Rotunjesc un număr zecimal: round la cel mai apropiat întreg, floor în jos, ceil în sus, truncate taie zecimalele.

Sintaxă
import kotlin.math.*
fun round(x: Double): Double
fun floor(x: Double): Double
fun ceil(x: Double): Double
fun truncate(x: Double): Double

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 la Double î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.