perché è il resto della divisione, moltiplicato per divisore? utilizzando l'operatore%

-3

Ho iniziato a imparare Javascript. Dal link link :

There is one more arithmetic operator which is probably less familiar to you. The % symbol is used to represent the remainder operation. X % Y is the remainder of dividing X by Y. For example 314 % 100 is 14, 10 % 3 is 1, and 144 % 12 is 0. Remainder has the same precedence as multiplication and division.

Non capisco, perché moltiplica la frazione rimanente per divisore (dopo la divisione). È più complicato o meno accurato.
10/3 = 3,33333 (un numero decimale ricorrente). 10% 3 = 1 (0,333 * 3 = 0,999 (non 1)

Qual è lo scopo di questo strano resto?

Grazie

    
posta Rapier 16.08.2013 - 15:40
fonte

3 risposte

4

È l'operatore modulo . Non è univoco per JavaScript. È un concetto Discrete Math . E è molto utile in molti modi. Di particolare interesse per l'informatica, è un'operazione importante in crittografia .

Ma, e forse questo è più quello che stai cercando, non è perfettamente correlato con le operazioni matematiche "normali" perché è una funzione matematica discreta. (Quale generalmente significa che hai a che fare con numeri interi.)

    
risposta data 16.08.2013 - 16:39
fonte
4

È uno di quegli operatori che pensi non utilizzerai mai e quindi trovi insostituibile.

Un esempio è il looping di un oggetto indicizzato:

i++;
if (i % 5 === 0) {
   i = 0;
}

Ovviamente, ciò può essere semplificato, ma questa è l'idea enunciata.

Il risultato è: 1, 2, 3, 4, 0, 1, 2, 3, 4, ecc ...

[Edit]

Inoltre, per rispondere alla domanda, penso che potresti chiederti ...

Può essere d'aiuto pensare in frazioni:

10 / 3 = 3 ⅓
⅓ * 3 = 1

Vedi anche: Divisione euclidea

    
risposta data 16.08.2013 - 16:30
fonte
2

Ci sono diverse risposte possibili a questa domanda da diversi punti di vista.

Iniziamo con l'approccio pratico. Ci sono semplicemente cose che possono essere divise solo in unità di una. Allo stesso tempo, per un determinato problema, può esserci il vincolo che tutte le parti devono essere uguali. Se si desidera dividere dieci centesimi tra tre persone e ciascuno di essi per ottenere una quota uguale, si rimane con un centesimo. Se hai uno schermo con 128 pixel di larghezza e un tavolo con dieci colonne ciascuno può avere 12 pixel e ti restano 8 pixel. Dividi quelli per due e sai dove posizionare il tavolo per centrarlo.

Da una visione matematica: qui può essere semplicemente una questione di definizione quale sistema numerico devi usare (numeri naturali, numeri interi, razionali, ecc.). Se il calcolo è limitato a numeri naturali o interi, non ci sono posizioni decimali. C'è una definizione chiara per questo in matematica: Resto (non sono un matematico, quindi spero che questa spiegazione non sia troppo semplificato)

Per computer e linguaggi di programmazione c'è spesso una strong differenza tra numeri interi e numeri in virgola mobile perché la loro rappresentazione binaria è diversa. Oggi non fa più una differenza così grande, ma le operazioni su interi erano più veloci di un'operazione in virgola mobile. E il numero di bit che possono essere usati per contenere un numero è limitato, quindi non sono possibili decimali ricorrenti (ci sono eccezioni in alcune lingue o librerie) che potrebbero portare a risultati di tali calcoli non esatti. Come puoi vedere dal link di Benjamin, in matematica 0.999 ... equivale a 1, per un computer questo non sarebbe il caso.

Molti linguaggi di programmazione hanno diversi tipi di dati per interi e float. Javascript non fa questa differenziazione. Ma per molte ragioni (come nei miei esempi sopra) ha ancora l'operatore modulo poiché ci sono applicazioni pratiche tanto quanto semplicemente completa l'insieme di operatori matematici per un'operazione ben definita.

    
risposta data 16.08.2013 - 16:21
fonte

Leggi altre domande sui tag