Ce face abs
abs(-7) este 7, iar abs(7) rămâne 7: valoarea absolută este distanța numărului față de zero. Funcția există pentru Int, Long, Float și Double și trebuie importată din kotlin.math. Aceeași valoare o dă proprietatea x.absoluteValue.
sign(x) returnează -1.0 pentru numere negative, 0.0 pentru zero și 1.0 pentru pozitive. Pentru întregi există proprietatea x.sign, care dă -1, 0 sau 1.
Atenție la un caz rar: abs(Int.MIN_VALUE) rămâne negativ, pentru că valoarea pozitivă corespunzătoare nu încape într-un Int.
Parametri
| Parametru | Descriere |
|---|---|
x |
Numărul pentru care se calculează. |
Ce returnează
abs: un număr de același tip, pozitiv sau zero. sign: -1, 0 sau 1.
Exemple
Exemplul 1: Valoarea absolută și semnul
abs elimină semnul; sign spune doar care era semnul.
import kotlin.math.abs
import kotlin.math.absoluteValue
import kotlin.math.sign
fun main() {
println(abs(-7))
println(abs(3.5))
println(sign(-12.4))
println(sign(0.0))
println((-5).sign)
println((-42).absoluteValue)
}
Rezultat
7
3.5
-1.0
0.0
-1
42
Exemplul 2: Diferența de temperatură
Nu contează care zi a fost mai caldă: diferența este mereu pozitivă cu abs.
import kotlin.math.abs
fun main() {
val ieri = -3.5
val azi = 4.0
println("Diferența: ${abs(azi - ieri)} °C")
println("Diferența: ${abs(ieri - azi)} °C")
}
Rezultat
Diferența: 7.5 °C
Diferența: 7.5 °C
Exemplul 3: Compararea a două numere zecimale
Calculele cu zecimale au mici erori, deci numerele se compară cu o toleranță, nu cu ==.
import kotlin.math.abs
fun main() {
val a = 0.1 + 0.2
val b = 0.3
println(a == b)
println(abs(a - b) < 1e-9)
}
Rezultat
false
true
Greșeli frecvente
- Uiți importul și primești
Unresolved reference: abs. Adaugăimport kotlin.math.abs. - Scrii
-42.absoluteValueși obții -42: minusul se aplică după proprietate, ca-(42.absoluteValue). Pune parantezele:(-42).absoluteValue.
Comenzi înrudite
max (kotlin.math): max returnează cel mai mare dintre două numere de același tip, min pe cel mai mic.sqrt: sqrt calculează rădăcina pătrată, pow ridică la putere (2.0.pow(3) = 8.0), hypot dă ipotenuza.Int.coerceIn: Ține un număr între limite: coerceIn(0, 100) îl aduce în interval, coerceAtLeast/AtMost pun doar o limită.