HOWTO · JavaScript
Operatore modulo(%) in JavaScript
Questo tutorial insegna come utilizzare l'operatore modulo(%) in JavaScript.
In questa pagina
L’operatore % di JavaScript restituisce il resto dopo una divisione. Con valori positivi, il risultato spesso coincide con quello che si chiama modulo; con i dividendi negativi, però, la differenza diventa evidente: in JavaScript il resto ha lo stesso segno del dividendo. Questa guida illustra la sintassi, i casi numerici speciali e gli usi più comuni.
Cosa restituisce l’operatore % di JavaScript
Per numeri finiti, a % b restituisce il resto dopo aver troncato verso zero il quoziente a / b. In 10 % 3, il quoziente è 3 e il resto è 1. Il risultato segue il segno del dividendo (a), quindi -10 % 3 è -1. Per questa regola sul segno, % in JavaScript è un operatore di resto e non restituisce sempre il risultato non negativo del modulo matematico.
Sintassi ed esempi di base
Scrivi prima il dividendo, poi % e infine il divisore: dividend % divisor. L’operatore accetta operandi numerici, comprese le frazioni. Nell’espressione, il valore a sinistra viene diviso per quello a destra e il risultato è un numero che il codice può memorizzare, confrontare o usare in un altro calcolo. L’esempio assegna ciascun risultato a una costante con nome e invia entrambi i valori alla console:
const wholeRemainder = 10 % 3;
const fractionalRemainder = 5.5 % 2;
console.log(wholeRemainder);
console.log(fractionalRemainder);
Il primo risultato è 1; il secondo è 1.5, perché 2 entra due volte in 5.5, con 1.5 che resta. L’esecuzione fornita conferma questi due output: 1 e 1.5.
Numeri negativi e casi limite
Il resto ha lo stesso segno del dividendo: 10 % 3 è 1, -10 % 3 è -1 e 10 % -3 è 1. Un multiplo esatto negativo può produrre zero negativo, come in -4 % 2; se il segno dello zero è rilevante, puoi confrontare il risultato con Object.is(-4 % 2, -0).
JavaScript restituisce NaN se uno dei due operandi è NaN, se il dividendo è infinito oppure se il divisore è 0 o -0. Se il dividendo è finito e il divisore è infinito, il risultato è il dividendo stesso: ad esempio, 5 % Infinity è 5. Questi risultati seguono la semantica numerica del resto in JavaScript; non sono stati osservati in un’esecuzione fornita con questo pacchetto.
Usi comuni dell’operatore %
Con valori interi, per verificare la parità si usa n % 2 === 0 per i numeri pari e n % 2 !== 0 per quelli dispari. Funziona anche con gli interi negativi, perché il loro resto è 0 oppure -1. Se l’input può essere una frazione o una stringa numerica, convalidalo o normalizzalo prima di applicare un controllo di parità per interi.
Per un numero finito, value % 1 restituisce il resto frazionario con segno: ad esempio, 5.5 % 1 è 0.5, mentre -5.5 % 1 è -0.5. Per ottenere una parte frazionaria positiva anche con valori negativi, scegli una regola di normalizzazione esplicita invece di presumere che % 1 sia sempre non negativo.
Per un numero intero non negativo di minuti, hours = Math.floor(minutes / 60) e remainingMinutes = minutes % 60 dividono il valore in ore e minuti. Ad esempio, 135 minuti diventano 2 ore e 15 minuti.
Per eseguire un’azione a ogni terzo passaggio di un ciclo, verifica i % 3 === 0. Per alternare due elementi di un array, usa (round - 1) % players.length quando round parte da 1; sottrarre uno fa sì che il primo turno usi l’indice 0. Questi schemi presuppongono rispettivamente un intervallo positivo e un array non vuoto.
Resto e modulo matematico
Il modulo matematico restituisce comunemente un valore da 0 incluso fino a un modulo positivo escluso. Invece, % in JavaScript mantiene il segno del dividendo, quindi -10 % 3 è -1. Con un modulo n finito e positivo, l’espressione ((a % n) + n) % n normalizza un valore finito a, producendo un risultato non negativo in stile modulo. Ad esempio, con il modulo 3, trasforma -10 in 2. Indica esplicitamente l’ipotesi che il modulo sia positivo: questo schema non sostituisce in generale % con divisori arbitrari.