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 गणनाओं के लिए मानक अंकगणितीय ऑपरेटर देता है:
| Operator | Description | Example |
|---|---|---|
+ |
जोड़ |
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)
इस अभ्यास में आप कोड लिखेंगे जो एक फ्रीलांसर को अपने ग्राहकों के साथ कुछ प्रोजेक्ट के दामों पर बात करने में मदद करेगा। आप कुछ उपयोगी फंक्शन लिखेंगे, जिनसे ग्राहकों की लागत जल्दी से निकाली जा सके।
एक ग्राहक फ्रीलांसर से उनकी दरों के बारे में पूछने के लिए संपर्क करता है। फ्रीलांसर बताते हैं कि वे दिन में 8 घंटे काम करते हैं। लेकिन फ्रीलांसर को प्रोजेक्ट की सिर्फ प्रति घंटा दर पता है। प्रति घंटा दर दी गई हो, तो उनकी दैनिक दर का अंदाज़ा लगाने में मदद कीजिए।
फंक्शन dailyRateFrom(hourlyRate:) बनाइए, जो आर्गुमेंट hourlyRate लेता है, जिसमें फ्रीलांसर की प्रति घंटा दर रहती है।
फंक्शन को प्रति घंटा दर के आधार पर दैनिक दर लौटानी चाहिए।
dailyRateFrom(hourlyRate: 60)
// Returns 480.0
लौटाई गई दैनिक दर Double होनी चाहिए।
कभी-कभी किसी ग्राहक की दिलचस्पी फ्रीलांसर को लंबे समय के लिए रखने में होती है। फ्रीलांसर ग्राहक को छूट देने को तैयार रहते हैं, लेकिन तभी जब ग्राहक उन्हें कम से कम एक महीने के लिए रखे। कुल मिलाकर 22 काम के दिन होते हैं। प्रति घंटा दर और दी जाने वाली छूट के प्रतिशत के आधार पर फ्रीलांसर की मासिक दर निकालने में मदद कीजिए, और उसे निकटतम पूर्ण संख्या तक पूर्णांकित कीजिए।
फंक्शन monthlyRateFrom(hourlyRate:withDiscount:) बनाइए, जो दो आर्गुमेंट लेता है: hourlyRate, जिसमें फ्रीलांसर की प्रति घंटा दर रहती है, और withDiscount, जिसमें वह छूट रहती है जो फ्रीलांसर ग्राहक को देना चाहते हैं।
फंक्शन को मासिक दर निकटतम पूर्ण संख्या तक पूर्णांकित करके लौटानी चाहिए।
monthlyRateFrom(hourlyRate: 77, withDiscount: 10.5)
// Returns 12129
किसी और दिन एक प्रोजेक्ट मैनेजर फ्रीलांसर को तय बजट वाले एक प्रोजेक्ट पर काम करने का प्रस्ताव देता है। तय बजट और फ्रीलांसर की प्रति घंटा दर दी गई हो, तो बजट खत्म होने तक वे कितने दिन काम करेंगे, यह निकालने में मदद कीजिए। ध्यान रखिए कि इस स्थिति में फ्रीलांसर हमेशा छूट देने को तैयार रहते हैं, चाहे उन्हें कितने भी दिनों के लिए रखा जाए। नतीजा नीचे की ओर पूर्णांकित किया जाना ज़रूरी है।
फंक्शन workdaysIn(budget:hourlyRate:withDiscount:) बनाइए, जो ये आर्गुमेंट लेता है:
budget, जिसमें प्रोजेक्ट का बजट रहता है।hourlyRate, जिसमें फ्रीलांसर की प्रति घंटा दर रहती है।withDiscount, जिसमें वह छूट रहती है जो फ्रीलांसर ग्राहक को देना चाहते हैं।फंक्शन को प्रोजेक्ट पर फ्रीलांसर के काम करने वाले दिनों की संख्या नीचे की ओर पूर्णांकित करके लौटानी चाहिए।
workdaysIn(budget: 20000, hourlyRate: 80, withDiscount: 11.0)
// Returns 35.0
Exercism पर साइन अप कीजिए और Swift को 35 कॉन्सेप्ट116 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।