2012-03-14 15 views
23

voglio verificare, se un numero è divisibile per un altro numero:sostituzione Lua per l'operatore%

for i = 1, 100 do 
    if i % 2 == 0 then 
     print(i .. " is divisible.") 
    end 
end 

Questo dovrebbe funzionare senza problemi, ma con la Lua in mio assistente lo script non viene eseguito se c'è uno % nello script ... Non so qual è il motivo, quindi c'è qualche "sostituzione" per quello? Quindi potrei verificare la divsibilità del numero?

Grazie.

+1

Quale versione di Lua è il server che esegue –

+0

Credo che la sua versione 5.0 o successiva ':? S'. – Cyclone

+6

suona come se avessi qualche problema di codifica, forse se trovi che cos'è la codifica, potresti essere in grado di far passare un '%' a. Prova '%%' o '\%' o '% 25' – Javier

risposta

20

Non è l'ideale, ma secondo il Lua 5.2 Reference Manual:

% B == a - Math.floor (a/b) * b

+6

Sembra una soluzione alternativa per le versioni precedenti di Lua. Almeno il% funziona bene in Lua 5.2 e versioni successive. –

+0

Che dire di% b == 0? – Preza8

+0

@HenrikErlandsson '%' è stato aggiunto come operatore in Lua 5.1. –

46

Usa math.fmod(x,y) che fa quello che si vuole :

Restituisce il resto della divisione di x per y che arrotonda il quoziente verso zero.

http://www.lua.org/manual/5.2/manual.html#pdf-math.fmod

+0

'math.fmod' non esisteva in Lua 5.0, è stato rinominato da' math.mod' a 'math.fmod' in Lua 5.1. Comunque, Lua 5.1 ha anche aggiunto l'operatore '%', quindi se l'OP sta eseguendo Lua 5.0, 'fmod' è la funzione sbagliata da usare. –

3
for i = 1, 100 do 
    if (math.mod(i,2) == 0) then 
     print(i .. " is divisible.") 
    end 
end 
+0

Strano che non sia documentato nella documentazione recente. (Almeno con un semplice test, sembra funzionare come fmod.) –

+0

@HenrikErlandsson Non è privo di documenti nella documentazione recente, la funzione è stata chiamata 'mod' in 5.0 e rinominata in' fmod' in 5.1. –

2

edit: il bisogno * b

3

Usa math.fmod, accroding lua manualmath.mod stato rinominato in math.fmod in Lua 5.1.

0

Lua 5.0 non supportava l'operatore %.

Lua supporta i soliti operatori aritmetici: il binario + (addizione), - (sottrazione), * (moltiplicazione),/(divisione) e^(esponenziazione); e unario - (negazione).

https://www.lua.org/manual/5.0/manual.html

Lua 5.1 tuttavia, supporta l'operatore %.

Lua supporta le usuali operatori aritmetici: il + binario (addizione), - (sottrazione), * (moltiplicazione),/(divisione),% (modulo), e^(esponenziale); e unario - (negazione).

https://www.lua.org/manual/5.1/manual.html

Se possibile, vorrei raccomandare di effettuare l'aggiornamento. Se questo non è possibile, utilizzare math.mod che viene indicato come uno dei Mathematical Functions a 5.0 (E 'stato rinominato in math.fmod in Lua 5.1