Swift - Konversi ke nilai absolut


191

apakah ada cara untuk mendapatkan nilai absolut dari integer?
sebagai contoh

-8  
to  
 8

Saya sudah mencoba menggunakan UInt () dengan asumsi itu akan mengkonversi Int ke nilai yang tidak ditandatangani tetapi tidak berhasil.


8
pemain / konversi seharusnya tidak pernah digunakan untuk mengubah nilai
Bryan Chen

Jawaban:


414

Fungsi standar abs()berfungsi dengan baik di sini:

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

Info bagus! Terima kasih! Saya akan menerima jawabannya setelah 10 menit :)
Niko Adrianus Yuwono

Apa yang perlu diimpor untuk menggunakan abs ()?
Jarrod Smith

3
@JarrodSmith: import Foundation
Adrian

3
Anda dapat mengimpor Darwin atau Foundation
YYamil

Bukankah Darwin bagian dari Yayasan?
Marin

38

Dengan Swift 5, Anda dapat menggunakan salah satu dari dua cara berikut untuk mengkonversi bilangan bulat ke nilai absolutnya.


# 1. Dapatkan nilai absolut dari Intdari magnitudeproperti

Intmemiliki magnitudeproperti. magnitudememiliki deklarasi berikut:

var magnitude: UInt { get }

Untuk nilai numerik apa pun x, x.magnitudeadalah nilai absolut dari x.

Cuplikan kode berikut ini menunjukkan cara menggunakan magnitudeproperti untuk mendapatkan nilai absolut pada Intinstance:

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

# 2. Dapatkan nilai absolut dari Intdari abs(_:)metode

Swift memiliki fungsi numerik global yang disebut abs(_:)metode. abs(_:)memiliki deklarasi berikut:

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

Mengembalikan nilai absolut dari angka yang diberikan.

Cuplikan kode berikut ini menunjukkan cara menggunakan abs(_:)fungsi global untuk mendapatkan nilai absolut pada Intinstance:

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

print (abs (Int.min)) tidak akan berfungsi. Apakah ada solusi untuk Swift 3? Saya belum memperbarui proyek saya.
bibscy

3
Kesempatan yang terlewatkan untuk mengatakan "dapatkan nilai absolut dengan sikap Int "
LinusGeffarth

1
@bibscy Lihat penjelasan Apple untuk memahami mengapa abs(Int8.min)tidak bisa bekerja dan karenanya membuat kesalahan overflow.
Imanou Petit


2

Jika Anda ingin mendapatkan nilai absolut dari double atau Int, gunakan fabsfunc:

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

Ya, Anda benar, tetapi fokus saya adalah pada fabs, permisi
Hamed
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.