Swift - конвертировать в абсолютное значение

192

Есть ли способ получить абсолютное значение из целого числа?
например

-8  
to  
 8

Я уже пытался использовать UInt (), предполагая, что он преобразует Int в беззнаковое значение, но это не сработало.

Нико Адрианус Ювоно
источник
8
приведение / преобразование никогда не должно использоваться, чтобы изменить значение
Брайан Чен

Ответы:

415

Стандартная abs()функция прекрасно работает здесь:

let c = -8
print(abs(c))
// 8
BS
источник
Хороший человек информации! Спасибо! Я приму ответ через 10 минут :)
Нико Адрианус Ювоно
Что нужно импортировать, чтобы использовать abs ()?
Джаррод Смит
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. Получить абсолютное значение метода Intfromabs(_:)

Swift имеет глобальную числовую функцию с именем abs(_:)method. abs(_:)имеет следующую декларацию:

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

Возвращает абсолютное значение заданного числа.

В следующем фрагменте кода показано, как использовать abs(_:)глобальную функцию для получения абсолютного значения в Intэкземпляре:

let value = -5
print(abs(value)) // prints: 5
Imanou Petit
источник
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
Сурабх Кумбхар
источник
fabs устарела
Chewie The Chorkie
2

Если вы хотите получить абсолютное значение от double или Int, используйте fabsfunc:

var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6
Хамед
источник
Да, вы правы, но я сосредоточился на том fabs, простите
Хамед