Math.signum în Java

signum() dă semnul unui număr (-1.0, 0.0 sau 1.0); copySign() pune semnul unui număr pe valoarea altuia.

Sintaxă
static double signum(double d)   // și float
static double copySign(double valoare, double semn)   // Java 6

Ce face Math.signum

Math.signum(x) returnează -1.0 pentru numere negative, 1.0 pentru pozitive și 0.0 (cu semnul lui zero) pentru zero. Pentru NaN returnează NaN. Rezultatul este double; pentru întregi există Integer.signum.

Math.copySign(valoare, semn) returnează valoarea absolută a primului argument cu semnul celui de-al doilea: copySign(5, -2) este -5.0. Este o formă scurtă pentru Math.abs(valoare) * Math.signum(semn), care merge corect și pentru zero.

Parametri

Parametru Descriere
d Numărul al cărui semn îl afli.
valoare Pentru copySign: mărimea.
semn Numărul de la care se ia semnul.

Ce returnează

Un double.

Exemple

Exemplul 1: Semnul unor numere

public class Main {
    public static void main(String[] args) {
        double[] valori = {-12.5, 0.0, 7, -0.0};
        for (double v : valori) {
            System.out.println(v + " -> " + Math.signum(v));
        }
        System.out.println(Math.copySign(5, -2));
        System.out.println(Math.copySign(-3.5, 1));
    }
}

Rezultat

-12.5 -> -1.0
0.0 -> 0.0
7.0 -> 1.0
-0.0 -> -0.0
-5.0
3.5

Exemplul 2: Evoluția unui sold

public class Main {
    public static void main(String[] args) {
        double[] variatii = {150.0, -42.5, 0.0, -300.0};
        String[] text = {"scădere", "fără schimbare", "creștere"};
        for (double v : variatii) {
            int index = (int) Math.signum(v) + 1;
            System.out.println(v + " lei: " + text[index]);
        }
    }
}

Rezultat

150.0 lei: creștere
-42.5 lei: scădere
0.0 lei: fără schimbare
-300.0 lei: scădere

Greșeli frecvente

  • Atribui Math.signum(x) unui int fără conversie: returnează double. Pentru întregi folosește Integer.signum(n).

Comenzi înrudite

  • Math.abs: Returnează valoarea absolută (fără semn) a unui număr; absExact aruncă excepție în cazul special al valorii minime.
  • Integer.compare: compare() compară două int-uri (negativ, 0, pozitiv); max, min și sum sunt variante scurte pentru referințe la metode.
  • Math: Clasa cu funcții matematice gata făcute: rotunjiri, puteri, radicali, trigonometrie, minim/maxim și calcule întregi sigure.