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

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

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

Float不能转换为Int

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


当前回答

使用函数样式的转换(参见“Swift编程语言”中的“整数和浮点转换”一节)。(iTunes链接))

  1> Int(3.4)
$R1: Int = 3

其他回答

var floatValue = 10.23
var intValue = Int(floatValue)

这足以将float转换为Int

只使用类型转换

 var floatValue:Float = 5.4
 var integerValue:Int = Int(floatValue)

 println("IntegerValue = \(integerValue)")

它将显示舍入值,例如:IntegerValue = 5意味着小数点将丢失

使用Int64而不是Int。Int64可以存储大的int值。

有很多方法可以精确地取整数。您最终应该使用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

假设你在“X”中存储浮点值,而在“Y”中存储整数值。

Var Y = Int(x);

or

var myIntValue = Int(myFloatValue)