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.