Swift-转换成绝对值


190

有什么办法可以从整数中获取绝对值?
例如

-8  
to  
 8

我已经尝试过使用UInt(),假设它会将Int转换为无符号值,但是没有用。


8
强制转换/转换永远不要改变价值
Bryan Chen

Answers:



38

使用Swift 5,您可以使用以下两种方式之一将整数转换为其绝对值。


#1 获取的绝对值Intmagnitude财产

Int有一个magnitude属性。magnitude具有以下声明:

var magnitude: UInt { get }

对于任何数值xx.magnitude是的绝对值x

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

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

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

Swift具有一个称为abs(_:)方法的全局数值函数。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
错过了说“获得诚信态度的绝对价值”的
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,原谅我
哈米德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.