Ce face Math.IEEEremainder
Operatorul % pe double calculează restul cu câtul tăiat spre zero, deci restul are semnul lui f1. Math.IEEEremainder(f1, f2) folosește câtul rotunjit la cel mai apropiat întreg (la egalitate, spre numărul par). De aceea rezultatul poate fi negativ chiar dacă ambele numere sunt pozitive: este cea mai mică abatere față de un multiplu al lui f2.
Este util când vrei să aduci o valoare cât mai aproape de zero într-un ciclu, de exemplu un unghi în intervalul [-180°, 180°]: IEEEremainder(unghi, 360).
Parametri
| Parametru | Descriere |
|---|---|
f1 |
Deîmpărțitul. |
f2 |
Împărțitorul. |
Ce returnează
Un double, restul IEEE; NaN dacă f2 este 0.
Exemple
Exemplul 1: Comparație cu %
public class Main {
public static void main(String[] args) {
double[][] perechi = {{10, 3}, {11, 3}, {7.5, 2}, {-10, 3}};
for (double[] p : perechi) {
System.out.println(p[0] + ", " + p[1] + ": % = " + (p[0] % p[1])
+ ", IEEEremainder = " + Math.IEEEremainder(p[0], p[1]));
}
}
}
Rezultat
10.0, 3.0: % = 1.0, IEEEremainder = 1.0
11.0, 3.0: % = 2.0, IEEEremainder = -1.0
7.5, 2.0: % = 1.5, IEEEremainder = -0.5
-10.0, 3.0: % = -1.0, IEEEremainder = -1.0
Exemplul 2: Unghiuri aduse în intervalul [-180°, 180°]
public class Main {
public static void main(String[] args) {
double[] unghiuri = {350, 190, -200, 540, 45};
for (double u : unghiuri) {
System.out.println(u + "° -> " + Math.IEEEremainder(u, 360) + "°");
}
}
}
Rezultat
350.0° -> -10.0°
190.0° -> -170.0°
-200.0° -> 160.0°
540.0° -> -180.0°
45.0° -> 45.0°
Greșeli frecvente
- Folosești
IEEEremainderca înlocuitor pentru%și te miri de rezultatele negative. Pentru un rest obișnuit, între 0 șif2, folosește%(și adaugăf2la valorile negative).
Comenzi înrudite
Math.floorDiv: Împărțire întreagă rotunjită în jos (floorDiv) sau în sus (ceilDiv), cu restul potrivit (floorMod, ceilMod).Math.fma: Calculează a × b + c cu o singură rotunjire la final (fused multiply-add), mai precis decât a * b + c.Math: Clasa cu funcții matematice gata făcute: rotunjiri, puteri, radicali, trigonometrie, minim/maxim și calcule întregi sigure.