Swift / Float操作

时间:2016-03-14 17:07:46

标签: ios swift

我在使用浮动计算时遇到了一些我不明白的事情,也许有人可以解释这两个操作和结果之间的区别:

for var i = 10; i < 20; i++ {
   //Assuming i = 11
   var result1:Float = Float(i/10) //equals 1
   var result2:Float = Float(i)/10 //equals 1.1
}

我偶然发现了因为我期望result1返回1.1并花了一些时间搜索错误,直到我理解语法必须与result2类似

是因为在Float(i / 10)中,内部操作(i / 10)在转换为Float之前总会返回一个整数吗?

任何解释赞赏

4 个答案:

答案 0 :(得分:2)

你的直觉是正确的,i/10 i: Int 总是返回一个整数。

然后将其转换为浮点数,但Float(1) == 1

第二个语句在执行除法之前隐式地将10转换为Float,因此返回1.1

答案 1 :(得分:0)

由于iinteger而10是integer,因此除法的结果也近似为integer。 如果您希望将结果视为float,则其中一个应为float 此规则可能来自C编程语言。这就是所谓的截断零 我找到了关于C的something,但规则仍然适用于swift。

答案 2 :(得分:0)

是的,你有正确的观点。因为由于括号的顺序首先执行(11/10)操作并且它返回一个圆形的int值并且在点之后丢失了部分(.1)。

答案 3 :(得分:0)

只是一个附录,你也可以得到result2:

var result3 = Float(i/10.0) 

还有一个FYI,C样式for循环是going away in Swift 3.0