Swift - 转换为绝对值

Nik*_*ono 180 iphone ios swift

有没有办法从整数中获取绝对值?
例如

-8  
to  
 8
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用UInt(),假设它将Int转换为无符号值,但它不起作用.

B.S*_*.S. 395

标准abs()功能在这里很有用:

let c = -8
print(abs(c))
// 8
Run Code Online (Sandbox Code Playgroud)

  • @JarrodSmith:import Foundation (3认同)
  • 您可以导入达尔文或基金会 (3认同)

Ima*_*tit 35

根据您的需要,使用Swift 4,您可以使用以下两种方法之一来解决您的问题(也适用于其他数值变量,如CGFloat,Double等):


#1.Intmagnitude属性获取绝对值

使用Swift 4,Int有一个magnitude属性.magnitude有以下声明:

var magnitude: UInt { get }
Run Code Online (Sandbox Code Playgroud)

对于任何数值x,x.magnitude是绝对值x.

以下代码段显示了如何使用magnitude属性来获取Int实例的绝对值:

let value = -5
print(value.magnitude) // prints: 5
Run Code Online (Sandbox Code Playgroud)

#2.获取Intfrom abs(_:)方法的绝对值

Swift 4有一个名为abs(_:)method 的全局数字函数.abs(_:)有以下声明:

func abs<T>(_ x: T) -> T where T : Comparable, T : SignedNumeric
Run Code Online (Sandbox Code Playgroud)

返回给定数字的绝对值.

以下代码段显示如何使用abs(_:)全局函数以获取Int实例的绝对值:

let value = -5
print(abs(value)) // prints: 5
Run Code Online (Sandbox Code Playgroud)

  • 错过机会说*"获得**Int**姿态的绝对价值"* (3认同)

Sou*_*har 6

如果要强制数字更改或保持正数。
方法如下:

abs() for int
fabs() for double
fabsf() for float
Run Code Online (Sandbox Code Playgroud)