Swift - Перетворення на абсолютне значення


191

чи є спосіб отримати абсолютне значення з цілого числа?
наприклад

-8  
to  
 8

Я вже намагався використовувати UInt (), припускаючи, що він перетворить Int у непідписане значення, але це не спрацювало.


8
Лит / конвертувати ніколи не слід використовувати для зміни значення
Брайан Чен,

Відповіді:


414

Тут abs()працює чудова стандартна функція:

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

Гарна інформація людина! Дякую! Я прийму відповідь через 10 хвилин :)
Ніко Адріанус Ювоно

Що потрібно імпортувати, щоб використовувати abs ()?
Jarrod Smith

3
@JarrodSmith: Фонд імпорту
Адріан

3
Ви можете імпортувати Дарвін або Фонд
YYamil

Чи не Дарвін є частиною Фонду?
Марін

38

За допомогою Swift 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

print (abs (Int.min)) не працюватиме. Чи є рішення для Swift 3? Я ще не оновлював свій проект.
bibscy

3
Пропущена можливість сказати "отримати абсолютне значення на позиції Int "
LinusGeffarth

1
@bibscy Дивіться пояснення Apple, щоб зрозуміти, чому abs(Int8.min)не може працювати, і тому створює помилку переповнення.
Іману Петі

8

Якщо ви хочете змусити число змінити або зберегти його позитивним.
Ось такий спосіб:

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


2

Якщо ви хочете отримати абсолютне значення від подвійного або Int, використовуйте fabsфункцію:

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

Так, ви маєте рацію, але я зосередився на цьому fabs, вибачте
Хамед
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.