Ce face Int.toDouble
Kotlin nu transformă automat numerele dintr-un tip în altul: un Int nu poate fi pus direct într-o variabilă Double. Conversia se face explicit, cu funcții ca toDouble(), toInt(), toLong(). În schimb, într-o operație ca 5 / 2.0, rezultatul este automat Double.
Double.toInt() taie zecimalele (spre zero), nu rotunjește: 9.99.toInt() este 9, iar -9.99.toInt() este -9. Valorile prea mari devin Int.MAX_VALUE, iar NaN devine 0. Pentru rotunjire, folosește roundToInt().
toDouble() se folosește des ca să eviți împărțirea întreagă: 7 / 2 este 3, dar 7.toDouble() / 2 este 3.5.
Ce returnează
Numărul convertit în tipul cerut.
Exemple
Exemplul 1: Împărțirea întreagă și toDouble
Între două Int, împărțirea taie restul. Cu un operand Double, rezultatul are zecimale.
fun main() {
val puncte = 47
val probe = 5
println(puncte / probe)
println(puncte.toDouble() / probe)
val media: Double = puncte.toDouble()
println(media)
}
Rezultat
9
9.4
47.0
Exemplul 2: toInt taie zecimalele
Indiferent cât de aproape de următorul întreg, toInt păstrează doar partea întreagă.
import kotlin.math.roundToInt
fun main() {
for (x in listOf(9.99, 9.01, -9.99)) {
println("$x: toInt=${x.toInt()}, roundToInt=${x.roundToInt()}")
}
println(1e12.toInt())
}
Rezultat
9.99: toInt=9, roundToInt=10
9.01: toInt=9, roundToInt=9
-9.99: toInt=-9, roundToInt=-10
2147483647
Exemplul 3: Procent de promovare
Fără toDouble(), 23 / 30 ar fi 0, iar procentul ar ieși 0.
fun main() {
val promovati = 23
val total = 30
println("Greșit: ${promovati / total * 100}%")
println("Corect: ${promovati.toDouble() / total * 100}%")
}
Rezultat
Greșit: 0%
Corect: 76.66666666666667%
Greșeli frecvente
- Scrii
val x: Double = 5. Kotlin nu convertește automat; scrie5.0sau5.toDouble(). - Folosești
toInt()pentru rotunjire:8.9.toInt()dă 8. FoloseșteroundToInt().
Comenzi înrudite
Double.roundToInt: Rotunjește un Double la cel mai apropiat Int; jumătățile (2.5) se rotunjesc în sus.Int.toString: toString transformă un număr în text (opțional în altă bază, ca 2 sau 16); toChar dă caracterul cu acel cod.String.toDouble: Transformă un text într-un număr cu zecimale (Double); toDoubleOrNull returnează null dacă textul nu e număr.Int.MAX_VALUE: Cea mai mare valoare pe care o poate ține un Int (2147483647); MIN_VALUE este cea mai mică.