Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Operatore Mod
Forum - C# / VB.NET - [VB.NET] Operatore Mod

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve a tutti,
In un'espressione utilizzo l'operatore Mod (X Mod Y dovrebbe darmi il resto della divisione tra X e Y)
Finchè X è positivo va bene, ma se faccio
-1 Mod 4
Mi restituisce -1, quando ogni calcolatrice al mondo restituisce 3

E' un bug o sono impazzito? :om:

Ultima modifica effettuata da il 03/04/2011 alle 15:41
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
3
Down
V
Segnala al moderatore
Postato alle 12:44
Lunedì, 04/04/2011
Secondo la definizione dell'operatore a livello di programmazione, il risultato è il resto della divisione intera. -1 / 4 fa 0 con il resto di -1, perciò il calcolo è formalmente corretto.
Tuttavia, questa è una definizione semplificata. Se vuoi lavorare con l'aritematica modulare, di conviene ridefinire l'operatore, o almeno un metodo di estensione dato che il polimorfismo di operatori non esiste ancora in .NET.
Ad esempio:
Codice sorgente - presumibilmente VB.NET

  1. Function Modulo(ByVal n As Int32, ByVal m As Int32) As Int32
  2.    If (n >= 0 And m > 0) Or (n <= 0 And m < 0) Then
  3.       Return n Mod m
  4.    End If
  5.    Return m + (n Mod m)
  6. End Function


In questo caso, poiché n = -1 e m = 4, il risultato è 4 + (-1 Mod 4) = 4 - 1 = 3.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 14:45
Domenica, 03/04/2011
veramente anche la calcolatrice di windows ritorna -1....


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.