توفّر Swift فئتين رئيسيتين من الأعداد: الأعداد الصحيحة والأعداد العشرية.
0 و1 و-1 و42 و-273.0.0 و3.14 و-1.36969e-10.يمكنك إدراج شرطات سفلية في القيم العددية الحرفية لتحسين قابلية القراءة: 1_000_000 مطابق لـ 1000000.
ويمكن كتابة القيم العشرية الحرفية بالترميز العشري أو الأُسّي.
في معظم الحالات، تستخدم Int للأعداد الصحيحة وDouble للأعداد العشرية:
let speed: Int = 42 // Explicit Int
let pi: Double = 3.14 // Explicit Double
let giga: Double = 1_000_000_000 // Double with readability underscores
let plancksConstant: Double = 6.62607015e-34 // Double in scientific notation
توفّر Swift العوامل الحسابية القياسية لإجراء الحسابات العددية:
| العامل | الوصف | المثال |
|---|---|---|
+ |
الجمع |
4 + 6 ناتجها 10
|
- |
الطرح |
15 - 10 ناتجها 5
|
* |
الضرب |
2 * 3 ناتجها 6
|
Swift آمنة من حيث الأنواع ولا تسمح بخلط أنواع عددية مختلفة في العمليات الحسابية.
لا يمكنك جمع أو ضرب Int وDouble مباشرةً؛ عليك أولًا تحويل أحد النوعين ليطابق الآخر.
يُنفّذ العامل / عملية القسمة.
عندما يكون كلا المعاملين عددين صحيحين، فإن قسمة الأعداد الصحيحة تحذف أي باقٍ كسري:
5.0 / 2.0 // 2.5 (Double division)
5 / 2 // 2 (integer division truncates the remainder)
تؤدي قسمة عدد عشري غير صفري على صفر إلى inf أو -inf.
وتؤدي قسمة 0.0 على 0.0 إلى nan (ليس عددًا).
في المقابل، تؤدي قسمة عدد صحيح على صفر إلى خطأ في وقت الترجمة أو وقت التشغيل:
print(5.0 / 0.0) // Prints inf
print(-5.0 / 0.0) // Prints -inf
print(0.0 / 0.0) // Prints nan
// The following line will not compile:
// print(5 / 0) // Error: Division by zero
يحسب عامل الباقي (%) الباقي المتبقي بعد قسمة عددين صحيحين:
5 % 2 // 1
-5 % 2 // -1
// Dividing by zero produces an error:
// 5 % 0 // Error: Division by zero
في Swift، يُعدّ % عامل باقٍ حقيقيًا، لا عامل مودولو.
تأخذ النتيجة دائمًا إشارة المعامل الأول (المقسوم)، بغض النظر عن إشارة المعامل الثاني:
5 % -2 // 1
-5 % 2 // -1
يمكنك تقريب عدد عشري باستخدام الطريقة rounded().
افتراضيًا، تقرّب rounded() إلى أقرب عدد صحيح.
ويمكنك أيضًا تمرير قاعدة تقريب محددة، مثل .up أو .down:
let x = 3.14
let y = x.rounded() // 3.0
let w = x.rounded(.down) // 3.0
let z = x.rounded(.up) // 4.0
عندما تُعلن ثابتًا عدديًا أو متغيرًا بدون تحديد النوع، تستنتج Swift نوعه:
Int.Double.let x = 42 // Inferred as Int
let y = 42.0 // Inferred as Double
let z: Double = 42 // Explicitly typed as Double
لإجراء عمليات بين قيم من أنواع مختلفة، حوّل إحدى القيم باستخدام مُهيّئات النوع مثل Double(_:) أو Int(_:):
let integerCount = 42
let floatingCount = Double(integerCount)
print(floatingCount) // Prints 42.0
let pi = 3.14
let integerPi = Int(pi)
print(integerPi) // Prints 3 (fractional part is truncated)