2015-01-12 25 views
6

CMD non è in grado di valutare il modulo dei numeri negativi utilizzando set /a?Set CMD/a, modulo e numeri negativi

90 % 7 equivale correttamente a 6 in batch, tuttavia -90 % 7 dà -6 invece di 1.

ho pensato che si sarebbe potuto valutare -(90 % 7), ma questo non sembra essere il caso come (-90) % 7 dà anche - 6.

h:\uprof>set /a -90%7 
-6 
h:\uprof>set /a (-90)%7 
-6 

Quindi - si tratta di una limitazione del CMD impostato/un modulo di operatore?

+1

Perché '-90% 7' dovrebbe dare tu 1 invece di -6? – PetSerAl

+1

In base alla calcolatrice di Google - [(-90) Modulo 7 = 1] (https://www.google.com.au/#q=-90%20%25%207). – unclemeat

+0

Calcolatrice di Windows ci fornisce anche -6 – Rafael

risposta

2

Come ha detto Jason W, % isn' t un operatore di modulo. Ma se si vuole -b mod N, forse questo può aiutare:

@echo off 
set /a num1=7 
set /a num2=-90 
:add 
if %num2% LSS 0 set /a num2+=num1&goto add 
echo/%num2% 
pause 
+0

Grazie, ho trovato un'altra espressione che non richiede il calcolo del modulo dei numeri negativi - a scapito di pochi byte (per [CodeGolf] (http://codegolf.stackexchange.com/)). – unclemeat

3

Se volete vero modulo, che si può usare questo:

set a=-90 
set b=7 
set /a (a%b+b)%b