Ce face Int.MAX_VALUE
Un Int ocupă 32 de biți și poate ține numere între Int.MIN_VALUE (-2147483648) și Int.MAX_VALUE (2147483647), adică aproximativ ±2,1 miliarde. Fiecare tip numeric are constantele lui: Long.MAX_VALUE (aproximativ 9,2 × 1018), Byte.MAX_VALUE (127), Double.MAX_VALUE.
Dacă un calcul depășește limita, rezultatul „se dă peste cap” fără nicio eroare: Int.MAX_VALUE + 1 devine Int.MIN_VALUE. Pentru sume mari folosește Long, iar dacă vrei o excepție la depășire, Math.addExact(a, b).
Int.MAX_VALUE se folosește și ca valoare de pornire când cauți un minim („orice număr real va fi mai mic”).
Ce returnează
Constante de tipul respectiv.
Exemple
Exemplul 1: Limitele tipurilor numerice
Fiecare tip are propriul interval de valori.
fun main() {
println("Int: ${Int.MIN_VALUE} .. ${Int.MAX_VALUE}")
println("Long: ${Long.MIN_VALUE} .. ${Long.MAX_VALUE}")
println("Byte: ${Byte.MIN_VALUE} .. ${Byte.MAX_VALUE}")
println("Biți într-un Int: ${Int.SIZE_BITS}")
}
Rezultat
Int: -2147483648 .. 2147483647
Long: -9223372036854775808 .. 9223372036854775807
Byte: -128 .. 127
Biți într-un Int: 32
Exemplul 2: Depășirea limitei
Adunarea trece peste maxim și dă un număr negativ. Cu Long rezultatul este corect, iar Math.addExact semnalează problema.
fun adunaUnu(n: Int) = n + 1
fun main() {
val maxim = Int.MAX_VALUE
println(adunaUnu(maxim))
println(maxim.toLong() + 1)
try {
println(Math.addExact(maxim, 1))
} catch (e: ArithmeticException) {
println("Eroare: ${e.message}")
}
}
Rezultat
-2147483648
2147483648
Eroare: integer overflow
Exemplul 3: Valoare de pornire pentru minim
Pornim de la cel mai mare Int posibil, așa că primul preț îl înlocuiește sigur.
fun main() {
val preturi = mapOf("Iași" to 2499, "Cluj" to 2399, "Brașov" to 2450)
var minim = Int.MAX_VALUE
var magazin = ""
for ((m, p) in preturi) {
if (p < minim) {
minim = p
magazin = m
}
}
println("Cel mai mic preț: $minim lei, la magazinul din $magazin")
}
Rezultat
Cel mai mic preț: 2399 lei, la magazinul din Cluj
Greșeli frecvente
- Aduni sume mari (de exemplu salarii în bani) într-un
Intși primești un rezultat negativ. FoloseșteLong. - Calculezi
Int.MAX_VALUE + 1și aștepți o eroare. Kotlin nu verifică depășirea la rulare; foloseșteMath.addExactdacă ai nevoie.
Comenzi înrudite
Int.toDouble: Conversii explicite între tipurile numerice: toDouble face un Int zecimal, toInt taie zecimalele unui Double.Double.isNaN: Verifică dacă un Double este NaN („nu este număr”), rezultatul unor calcule ca 0.0 / 0.0 sau sqrt(-1.0).Int.countOneBits: Numără câți biți de 1 are un număr în scrierea binară (de exemplu 7 = 111 are 3).