اعداد در لوا

اعداد صحیح و اعشاری، عملیات ریاضی، کتابخانه 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 (عدد نیست)

این مبحث بخشی از دوره آموزش کامل لوا است.

ابزارهای مرتبط