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

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

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

Float不能转换为Int

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


当前回答

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

 var float:Float = 2.2
 var integer:Int = Int(float)

其他回答

你可以像这样在Swift中将Float转换为Int:

var myIntValue:Int = Int(myFloatValue)
println "My value is \(myIntValue)"

你也可以通过@paulm的评论来实现这个结果:

var myIntValue = Int(myFloatValue)

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

 var float:Float = 2.2
 var integer:Int = Int(float)

您可以使用计算属性制作一个方便的扩展,并从项目中的任何地方使用它

    extension Float{
    
    var toInt : Int{
       return Int(self)
    }
    
}

调用

private var call: Float = 55.9
print(call.toInt)

有很多方法可以精确地取整数。您最终应该使用swift的标准库方法roundaround()来以所需的精度舍入浮点数。

取整use .up规则:

let f: Float = 2.2
let i = Int(f.rounded(.up)) // 3

向下舍入使用.down规则:

let f: Float = 2.2
let i = Int(f.rounded(.down)) // 2

要四舍五入到最接近的整数,请使用.toNearestOrEven规则:

let f: Float = 2.2
let i = Int(f.rounded(.toNearestOrEven)) // 2

请注意以下示例:

let f: Float = 2.5
let i = Int(roundf(f)) // 3
let j = Int(f.rounded(.toNearestOrEven)) // 2
var i = 1 as Int

var cgf = CGFLoat(i)