সুইফ্ট - পরম মানে রূপান্তর করুন


190

কোনও পূর্ণসংখ্যার থেকে নিখুঁত মান পাওয়ার কোনও উপায় আছে কি?
উদাহরণ স্বরূপ

-8  
to  
 8

আমি ইতিমধ্যে ইউআইএনটি () ব্যবহার করে চেষ্টা করে ধরে নিলাম এটি ইন্টকে স্বাক্ষরযুক্ত মানতে রূপান্তর করবে তবে এটি কার্যকর হয়নি।


8
কাস্ট / রূপান্তর কখনই মান পরিবর্তন করতে ব্যবহার করা উচিত নয়
ব্রায়ান চেন

উত্তর:


413

স্ট্যান্ডার্ড abs()ফাংশন এখানে দুর্দান্ত কাজ করে:

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

ভাল তথ্য মানুষ! ধন্যবাদ! আমি 10 মিনিটের পরে উত্তরটি গ্রহণ করব :)
নিকো অ্যাড্রিয়ানাস যুওয়ানো

অ্যাবস () ব্যবহার করার জন্য কী আমদানি করা দরকার?
জারোদ স্মিথ

3
@ জারোদ স্মিথ: আমদানি ফাউন্ডেশন
এড্রিয়ান

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

মুদ্রণ (অ্যাবস (ইনটমিন)) কাজ করবে না। সুইফট 3 এর কোনও সমাধান আছে কি? আমি আমার প্রকল্পটি এখনও আপডেট করি নি।
বিবিসি 16

3
"কোনও ইন্টার স্ট্যান্সের জন্য নিখুঁত মান পান"
লিনাসগের্থ

1
@ বিবিসি কেন কাজ করতে পারে না তা বোঝার জন্য অ্যাপলের ব্যাখ্যা দেখুন abs(Int8.min)এবং অতএব একটি ওভারফ্লো ত্রুটি তৈরি করে।
ইমানু পেটিট


2

আপনি যদি ডাবল বা ইন্টার থেকে নিখুঁত মান পেতে চান তবে fabsফানক ব্যবহার করুন :

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

হ্যাঁ, আপনি ঠিক বলেছেন, তবে আমার ফোকাসটি ছিল fabs, আমাকে ক্ষমা করে দিন
হামেদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.