स्विफ्ट - पूर्ण मूल्य में परिवर्तित करें


190

पूर्णांक से निरपेक्ष मान प्राप्त करने का कोई तरीका है?
उदाहरण के लिए

-8  
to  
 8

मैंने पहले से ही UInt () का उपयोग करने की कोशिश की, यह मानकर कि यह इंट को अहस्ताक्षरित मान में बदल देगा लेकिन यह काम नहीं किया।


8
कास्ट / कन्वर्ट का उपयोग कभी भी मूल्य बदलने के लिए नहीं किया जाना चाहिए
ब्रायन चेन

जवाबों:


413

मानक abs()समारोह यहाँ बहुत अच्छा काम करता है:

let c = -8
print(abs(c))
// 8

अच्छी जानकारी है यार! धन्यवाद! मैं 10 मिनट बाद जवाब स्वीकार करूंगा :)
निको एड्रियनस युवोनो

एब्स का उपयोग करने के लिए क्या आयात करना होगा ()?
जर्रोड स्मिथ

3
@JarrodSmith: आयात फाउंडेशन
एड्रियन

3
आप या तो डार्विन या फाउंडेशन का आयात कर सकते हैं
यायमिल

डार्विन फाउंडेशन का हिस्सा नहीं है?
मारिन

38

स्विफ्ट 5 के साथ, आप पूर्णांक को इसके पूर्ण मान में बदलने के लिए निम्नलिखित दो तरीकों में से एक का उपयोग कर सकते हैं।


# 1। संपत्ति Intसे पूर्ण मूल्य प्राप्त करेंmagnitude

Intएक magnitudeसंपत्ति है। magnitudeनिम्नलिखित घोषणा है:

var magnitude: UInt { get }

किसी भी संख्यात्मक मान के लिए x, x.magnitudeका पूर्ण मूल्य है x

निम्न कोड स्निपेट दिखाता है कि magnitudeकिसी Intउदाहरण पर पूर्ण मान प्राप्त करने के लिए संपत्ति का उपयोग कैसे किया जाए :

let value = -5
print(value.magnitude) // prints: 5

# 2। किसी विधि Intसे पूर्ण मान प्राप्त करेंabs(_:)

स्विफ्ट में एक वैश्विक संख्यात्मक फ़ंक्शन है जिसे abs(_:)विधि कहा जाता है। abs(_:)निम्नलिखित घोषणा है:

func abs<T>(_ x: T) -> T where T : Comparable, T : SignedNumeric

दी गई संख्या का निरपेक्ष मान लौटाता है।

निम्न कोड स्निपेट दिखाता है कि उदाहरण abs(_:)पर पूर्ण मान प्राप्त करने के लिए वैश्विक फ़ंक्शन का उपयोग कैसे करें Int:

let value = -5
print(abs(value)) // prints: 5

प्रिंट (abs (Int.min)) काम नहीं करेगा। क्या स्विफ्ट 3 का कोई समाधान है? मैंने अभी तक अपनी परियोजना को अपडेट नहीं किया है।
बाइबिल 34

3
कहने का अवसर " इंट

1
@bibscy यह समझने के लिए कि काम क्यों नहीं किया जा सकता है और इसलिए एक अतिप्रवाह त्रुटि बनाता है, एप्पल के स्पष्टीकरण को देखें abs(Int8.min)
इमानौ पेटिट

7

यदि आप किसी संख्या को बदलने या उसे सकारात्मक रखने के लिए बाध्य करना चाहते हैं।
यहाँ तरीका है:

abs() for int
fabs() for double
fabsf() for float


2

यदि आप डबल या इंट से पूर्ण मूल्य प्राप्त करना चाहते हैं, तो fabsफंक का उपयोग करें :

var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6

हाँ, तुम ठीक कह रहे हैं, लेकिन मेरा फोकस पर था fabs, मुझे क्षमा करें
हामेद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.