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


192

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

-8  
to  
 8

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


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

Ответы:


415

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

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

Хороший человек информации! Спасибо! Я приму ответ через 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

print (abs (Int.min)) не будет работать. Есть ли решение для Swift 3? Я еще не обновил свой проект.
Bibscy

3
Упущенная возможность сказать «получить абсолютную стоимость в позиции Int »
LinusGeffarth

1
@bibscy См . объяснение Apple, чтобы понять, почему abs(Int8.min)не может работать, и поэтому возникает ошибка переполнения.
Иманоу Пети,


2

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

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.