如何在Swift中进行int和float之间的算术运算?

时间:2014-06-19 06:51:59

标签: compiler-errors swift xcode6

这是我在Swift编程中的第一天,到现在为止我们正在使用Objective C.我试着编写简单的附加程序。像,

var i = 10
var j = 10
var k = i + j
println(k)

但是当我将其中一个值更改为float时会出错。

var i = 10
var j = 10.4
var k = i + j
println(k)
  

错误:main.swift:13:11:无法找到' +'那   接受提供的参数

现在我进行了谷歌搜索并试了几件事,例如Double(i+j),但它不起作用。在这种情况下,Swift应该隐式地将int转换为float,不是吗?

请告知我是否在理解Swift语言时遇到任何错误。

3 个答案:

答案 0 :(得分:24)

根据您想要的结果,您应该使用该类型的init方法将其转换为适当的类型。

例如

var myInt = 5;
var myDouble = 3.4;

如果我想在结果中使用双精度

var doubleResult = Double(myInt) + myDouble;

如果我想要一个整数,请注意双重将被截断。

var intResult = myInt + Int(myDouble)

我在您的示例中看到的问题是您尝试执行添加操作然后转换它,但在执行添加之前两个值都必须相同。

Apple严格控制,以避免类型不匹配和转换错误。有时候这可能有点“过于严格”。对于来自其他语言的开发人员,我一开始很生气,但我已经习惯了。

答案 1 :(得分:6)

您可以定义自己的运营商......

// Put this at file level anywhere in your project
operator infix + { }
@infix func + (a: Int, b: Double) -> Double {
    return Double(a) + b
}
@infix func + (a: Double, b: Int) -> Double {
    return Double(b) + a
}

let i = 10
let j = 10.4
let k = i + j // 20.4

...但我觉得这违背了语言的精神(正如@TheLazyChap所说,这取决于你想要什么,这可能并不总是相同的。)

答案 2 :(得分:0)

试试这个:

 var i = 10  //Int Type
 var j = 10.4  //Double Type
 var k = Double(i) + j //result is now Double Type
 println(k)