【发布时间】:2014-08-01 07:35:06
【问题描述】:
有没有办法从整数中获取绝对值?
例如
-8
to
8
我已经尝试使用 UInt(),假设它会将 Int 转换为无符号值,但它不起作用。
【问题讨论】:
-
cast/convert 永远不应该用来改变值
有没有办法从整数中获取绝对值?
例如
-8
to
8
我已经尝试使用 UInt(),假设它会将 Int 转换为无符号值,但它不起作用。
【问题讨论】:
标准的abs() 函数在这里很好用:
let c = -8
print(abs(c))
// 8
【讨论】:
Int8(-128) - 这将导致EXC_BAD_INSTRUCTION
在 Swift 5 中,您可以使用以下两种方法之一将整数转换为其绝对值。
magnitude 属性中获取Int 的绝对值Int 有一个magnitude 属性。 magnitude 有以下声明:
var magnitude: UInt { get }
对于任何数值
x,x.magnitude是x的绝对值。
以下代码 sn-p 显示如何使用 magnitude 属性来获取 Int 实例的绝对值:
let value = -5
print(value.magnitude) // prints: 5
abs(_:) 方法获取Int 的绝对值Swift 有一个名为abs(_:) 的全局数值函数。 abs(_:) 有以下声明:
func abs<T>(_ x: T) -> T where T : Comparable, T : SignedNumeric
返回给定数字的绝对值。
以下代码 sn-p 显示如何使用 abs(_:) 全局函数来获取 Int 实例的绝对值:
let value = -5
print(abs(value)) // prints: 5
【讨论】:
abs(Int8.min) 无法工作并因此产生溢出错误。
如果要从 double 或 Int 中获取绝对值,请使用 fabs func:
var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6
【讨论】:
fabs,对不起
如果您想强制更改某个数字或使其保持正数。
方法如下:
abs() for int
fabs() for double
fabsf() for float
【讨论】: