Swift - Mutlak değere dönüştür


191

bir tamsayıdan mutlak değer almanın bir yolu var mı?
Örneğin

-8  
to  
 8

Ben zaten Int imzasız değere dönüştürecek varsayarak UInt () kullanmaya çalıştım ama işe yaramadı.


8
cast / convert değeri değiştirmek için asla kullanılmamalıdır
Bryan Chen

Yanıtlar:


414

Standart abs()fonksiyon burada harika çalışıyor:

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

Güzel bilgi adamım! Teşekkürler! Cevabı 10 dakika sonra kabul edeceğim :)
Niko Adrianus Yuwono

Abs () kullanmak için içe aktarılması gerekenler nelerdir?
Jarrod Smith

3
@JarrodSmith: İthalat Vakfı
Adrian

3
Darwin veya Vakıf ithal edebilirsiniz
YYamil

Darwin Vakfın bir parçası değil mi?
Marin

38

Swift 5 ile, bir tamsayıyı mutlak değerine dönüştürmek için aşağıdaki iki yoldan birini kullanabilirsiniz.


# 1. Bir mutlak değerini alın Intgelen magnitudemülkiyet

IntBir sahiptir magnitudeözelliği. magnitudeaşağıdaki beyanı içerir:

var magnitude: UInt { get }

Herhangi bir sayısal değer için x, x.magnitudemutlak değeridir x.

Aşağıdaki kod snippet'i, magnitudebir Intörnekte mutlak değeri elde etmek için özelliğin nasıl kullanılacağını gösterir :

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

# 2. Bir mutlak değer elde Intgelen abs(_:)bir yöntem

Swift, abs(_:)yöntem adı verilen küresel bir sayısal işleve sahiptir . abs(_:)aşağıdaki beyanı içerir:

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

Belirli bir sayının mutlak değerini döndürür.

Aşağıdaki kod snippet'i, abs(_:)bir Intörnekte mutlak değeri elde etmek için genel işlevin nasıl kullanılacağını gösterir :

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

print (abs (Int.min)) çalışmaz. Swift 3 için herhangi bir çözüm var mı? Projemi henüz güncellemedim.
bibscy

3
" Int duruşunda mutlak değer elde etmek"
LinusGeffarth 16:18

1
@bibscy Neden çalışamayacağını anlamak için Apple'ın açıklamasına bakın abs(Int8.min)ve bu nedenle bir taşma hatası oluşturur.
Imanou Petit

8

Bir sayıyı değiştirmek veya pozitif tutmak için zorlamak istiyorsanız.
İşte yolu:

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

fabs kullanımdan kaldırıldı
Chewie Chorkie

2

Bir çift veya Int'den mutlak değer almak istiyorsanız, fabsfunc kullanın :

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

Evet, haklısın, ama odaklanıyordum fabs, afedersiniz
Hamed
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.