2012-03-14 20 views
23

Tôi muốn kiểm tra, nếu một số chia hết cho số khác:Lua thay thế cho các nhà điều hành%

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

này nên làm việc mà không cần bất kỳ vấn đề, nhưng với sự Lua trong máy chủ của tôi kịch bản không chạy nếu có % trong tập lệnh ... Tôi không biết lý do là gì, vì vậy có bất kỳ "thay thế" nào không? Vì vậy, tôi có thể kiểm tra số divsibility?

Cảm ơn bạn.

+1

gì phiên bản của Lua là máy chủ chạy –

+0

Tôi nghĩ rằng nó 5.0 trở lên ':? S'. – Cyclone

+6

có vẻ như bạn có một số vấn đề về mã hóa, có thể nếu bạn thấy mã hóa là gì, bạn có thể lẻn một '%' qua. Try '%%' hoặc '\%' hoặc '% 25' – Javier

Trả lời

20

Đó không phải là lý tưởng, nhưng theo Lua 5.2 Reference Manual:

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

+6

Điều này có vẻ là một giải pháp cho các phiên bản cũ của Lua. Ít nhất% hoạt động tốt trong Lua 5.2 trở lên. –

+0

Điều gì về một% b == 0? – Preza8

+0

@HenrikErlandsson '%' được thêm vào làm toán tử trong Lua 5.1. –

46

Sử dụng math.fmod(x,y) mà làm những gì bạn muốn :

Trả lại phần còn lại của phép chia x theo y làm tròn số thương về không.

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

+0

'math.fmod' không tồn tại trong Lua 5.0, nó được đổi tên từ' math.mod' thành 'math.fmod' trong Lua 5.1. Tuy nhiên, Lua 5.1 cũng thêm toán tử '%', vì vậy nếu OP đang chạy Lua 5.0, 'fmod' là hàm sai để sử dụng. –

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

Lạ lẫm rằng nó không có giấy tờ trong tài liệu gần đây. (Ít nhất là với một bài kiểm tra đơn giản, nó có vẻ hoạt động như fmod.) –

+0

@HenrikErlandsson Nó không có giấy tờ trong tài liệu gần đây, hàm này được gọi là 'mod' trong 5.0 và đổi tên thành' fmod' trong 5.1. –

2

chỉnh sửa: cần * b

3

Sử dụng math.fmod, accroding lua manualmath.mod được đổi tên thành math.fmod trong lua 5.1.

0

Lua 5.0 không hỗ trợ nhà điều hành %.

Lua hỗ trợ toán tử số học thông thường: nhị phân + (bổ sung), - (trừ), * (phép nhân),/(phân chia) và^(lũy thừa); và unary - (phủ định). Tuy nhiên,

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

Lua 5.1 không hỗ trợ các nhà điều hành %.

Lua hỗ trợ toán tử số học thông thường: nhị phân + (bổ sung), - (trừ), * (phép nhân),/(phân chia),% (modulo) và^(lũy thừa); và unary - (phủ định).

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

Nếu có thể, tôi sẽ khuyên bạn nên nâng cấp. Nếu điều đó là không thể, sử dụng math.mod được liệt kê như là một trong những Mathematical Functions trong 5.0 (Nó được đổi tên thành math.fmod trong Lua 5.1