نوع بيانات رقم، أو double، يمثل رقم عائم مزدوج الدقة (64 بت). يمكن أن تتراوح الأرقام من -1.7 * 10308 إلى 1.7 * 10308 (حوالي 15 رقم من الدقة، إيجابي أو سلبي).
موقّع وغير موقّع
يشير علامة الرقم إلى ما إذا كان موجبًا أم سالبًا. على سبيل المثال، 1 هو رقم موجب و -1 هو رقم سالب. في Luau، الرقم -0 يعادل 0.
print(0 == -0) --> trueprint(-0 > 1) --> falseprint(-0 < 1) --> trueprint(-0 > -1) --> trueprint(-0 < -1) --> false
تصنيفات الأnumbers
لا يميز Luau بين الأعداد الصحيحة والأرقام، ولكن مرجع API أحيانًا يميز بينهما لتحديد كيفية استخدام كل واجهة برمجة تطبيقات بشكل أكثر تحديدًا.
float
نوع الرقم float يشير إلى رقم حقيقي به منزل عشري. في مصطلحات علوم الحاسوب، هم أرقام عائمة دقيقة مفردة (32 بت)، وهي ليست بدقة الأرقام العائمة مزدوجة الدقة، ولكنها دقيقة بما يكفي لمعظم حالات الاستخدام وتتطلب ذاكرة وتخزين أقل.
int
نوع الرقم integer، أو int، يشير إلى رقم صحيح 32 بت، ويتراوح من -231 إلى 231 - 1. الخصائص والوظائف التي تتوقع أعدادًا صحيحة قد تقوم تلقائيًا بتقريبها أو رفع أخطاء عندما تقوم بتعيين أو تمرير أعداد غير صحيحة إليها.
int64
نوع الرقم int64 يشير إلى عدد صحيح موقّع 64 بت، والذي يتراوح من -263 إلى 263 - 1. هذا النوع من الأعداد الصحيحة شائع في الأساليب التي تستخدم أرقام الهوية من موقع Roblox. على سبيل المثال، Player.UserId هو int64، وMarketplaceService:PromptPurchase() و TeleportService:Teleport() كل منهما يتوقع int64 لحجج الهوية.
التدوين
يتم تدوين الأرقام مع الأرقام الأكثر أهمية أولاً (big-endian). هناك طرق متعددة لتدوين الأدلة الرقمية في Luau:
- التدوين العشري (قاعدة 10) — اكتب أرقام الرقم بشكل طبيعي باستخدام الأرقام 0-9 مع نقطة عشرية اختيارية واحدة، على سبيل المثال 7، 1.25، أو -22.5.
- التدوين العلمي — اكتب رقمًا عشريًا يتبعه e أو e+، ثم عدد صحيح لرفع الرقم العشري إلى قوة 10. على سبيل المثال، 12e3 يعني 12 × 10^3 (12,000).
- التدوين الست عشري (قاعدة 16) — ابدأ الرقم بـ 0x يتبعه أرقام 0-9 أو A-F (غير مهم الحالة). على سبيل المثال، 0xF يعني 15 و 0x3FC يعني 1020.
- التدوين الثنائي (قاعدة 2) — ابدأ الرقم بـ 0b يتبعه 0s أو 1s، على سبيل المثال 0b1100 (12 في التنسيق العشري).
العمليات
يمكنك استخدام المنطق و العلاقات عاملات للتحكم ومقارنة الأرقام. يمكنك أيضًا استخدام الدوال الرياضية مثل math.sqrt() و math.exp() في مكتبة math وعميات بتية في مكتبة bit32.
استكشاف النوع
يمكنك تحديد ما إذا كانت القيمة x رقمًا باستخدام type(x) أو typeof(x). كلاهما يعيد السلسلة النصية number إذا كانت x رقمًا.
local testInt = 5local testDecimal = 9.12761656local testString = "Hello"print(type(testInt)) --> numberprint(type(testDecimal)) --> numberprint(type(testString)) --> stringprint(typeof(testInt)) --> numberprint(typeof(testDecimal)) --> numberprint(typeof(testString)) --> string
دوال التقريب
يمكنك تقريب الأرقام باستخدام math.floor(), math.ceil(), أو math.modf(). هذه الدوال تعيد نتيجة صحيحة إذا كان بإمكان Luau تمثيلها كعدد صحيح. إذا كانت الرقم كبير جدًا، فإن Luau يعيده كرقم عائم.
- لتحديد ما إذا كان الرقم x عددًا صحيحًا، استخدم math.floor(x) == x.
- لتقريب عدد لأسفل، استخدم math.floor().
- لتقريب عدد لأعلى، استخدم math.ceil().
- لتقريب عدد نحو الصفر، استخدم math.modf(). تعيد أيضًا الاختلاف الكسري للعدد المقرب كنتيجة ثانية.
print(math.floor(3.3)) --> 3print(math.floor(-3.3)) --> -4print(math.ceil(3.3)) --> 4print(math.ceil(-3.3)) --> -3print(math.modf(3.3)) --> 3 0.2999999999999998print(math.modf(-3.3)) --> -3 -0.2999999999999998