我想在Swift中转换浮点数为Int。像这样的基本强制转换不起作用,因为这些类型不是基本类型,不像Objective-C中的float和int类型

var float: Float = 2.2
var integer: Int = float as Float

但是这会产生以下错误消息:

Float不能转换为Int

知道如何将属性从Float转换为Int吗?


当前回答

var i = 1 as Int

var cgf = CGFLoat(i)

其他回答

是这样的:

var float:Float = 2.2 // 2.2
var integer:Int = Int(float) // 2 .. will always round down.  3.9 will be 3
var anotherFloat: Float = Float(integer) // 2.0

你可以像这样进行类型转换:

 var float:Float = 2.2
 var integer:Int = Int(float)
var i = 1 as Int

var cgf = CGFLoat(i)

显式转换

转换为Int将失去任何精度(有效地舍入)。通过访问数学库,可以执行显式转换。例如:

如果你想四舍五入并转换为整数:

let f = 10.51
let y = Int(floor(f))

结果是10。

如果你想四舍五入并转换为整数:

let f = 10.51
let y = Int(ceil(f))

结果是11。

如果要显式舍入到最接近的整数

let f = 10.51
let y = Int(round(f))

结果是11。

在后一种情况下,这可能看起来很迂腐,但它在语义上更清楚,因为没有隐式转换……如果你在做信号处理,这很重要。

var floatValue = 10.23
var intValue = Int(floatValue)

这足以将float转换为Int