اعداد در لوا
اعداد صحیح و اعشاری، عملیات ریاضی، کتابخانه math و تولید عدد تصادفی
اعداد در لوا
در لوا همه اعداد از نوع number هستند. از نسخه 5.3، لوا اعداد صحیح (integer) و اعشاری (float) را در سطح نمایش عددی تفکیک میکند:
local a = 100 -- عدد صحیح
local b = 3.14 -- عدد اعشاری
local c = 1e2 -- نماد علمی: 100
local d = 0xFF -- هگزادسیمال: 255
print(a, b, c, d)
عملیات ریاضی پایه
print(10 + 3) -- 13 (جمع)
print(10 - 3) -- 7 (تفریق)
print(10 * 3) -- 30 (ضرب)
print(10 / 3) -- 3.3333... (تقسیم — همیشه اعشاری)
print(10 // 3) -- 3 (تقسیم صحیح)
print(10 % 3) -- 1 (باقیمانده)
print(2 ^ 10) -- 1024 (توان)
تفاوت
/ و //: تقسیم معمولی همیشه نتیجه اعشاری میدهد، اما تقسیم صحیح (//) بخش صحیح را برمیگرداند.کتابخانه math
توابع ریاضی در کتابخانه math قرار دارند:
| تابع | کار | مثال |
|---|---|---|
math.floor(x) | گرد به پایین | math.floor(3.7) → 3 |
math.ceil(x) | گرد به بالا | math.ceil(3.2) → 4 |
math.abs(x) | قدر مطلق | math.abs(-5) → 5 |
math.sqrt(x) | جذر | math.sqrt(16) → 4 |
math.max(...) | بزرگترین | math.max(1, 5, 3) → 5 |
math.min(...) | کوچکترین | math.min(1, 5, 3) → 1 |
math.pi | عدد پی | 3.14159... |
math.huge | بینهایت | inf |
عدد تصادفی
math.randomseed(42) -- مقداردهی اولیه (یک بار)
print(math.random()) -- عدد اعشاری بین 0 و 1
print(math.random(10)) -- عدد صحیح بین 1 تا 10
print(math.random(1, 6)) -- عدد صحیح بین 1 تا 6 (تاس!)
اگر
math.randomseed را صدا نزنید، هر بار برنامه را اجرا کنید همان دنباله اعداد تصادفی تولید میشود!گرد کردن اعداد
لوا تابع round داخلی ندارد، اما میتوانید بسازید:
local function round(x)
return math.floor(x + 0.5)
end
print(round(3.4)) -- 3
print(round(3.5)) -- 4
print(round(3.6)) -- 4
فرمت اعداد اعشاری
برای نمایش عدد اعشاری با تعداد رقم مشخص:
local pi = 3.14159265
print(string.format("%.2f", pi)) -- 3.14
print(string.format("%.4f", pi)) -- 3.1416
خطای تقسیم بر صفر
در لوا تقسیم بر صفر خطا نمیدهد!
print(1 / 0) -- inf (بینهایت)
print(-1 / 0) -- -inf
print(0 / 0) -- -nan (عدد نیست)
این مبحث بخشی از دوره آموزش کامل لوا است.