我在使用浮动计算时遇到了一些我不明白的事情,也许有人可以解释这两个操作和结果之间的区别:
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之前总会返回一个整数吗?
任何解释赞赏
答案 0 :(得分:2)
你的直觉是正确的,i/10
i: Int
总是返回一个整数。
然后将其转换为浮点数,但Float(1) == 1
。
第二个语句在执行除法之前隐式地将10
转换为Float,因此返回1.1
答案 1 :(得分:0)
由于i
是integer
而10是integer
,因此除法的结果也近似为integer
。
如果您希望将结果视为float
,则其中一个应为float
此规则可能来自C编程语言。这就是所谓的截断零
我找到了关于C的something,但规则仍然适用于swift。
答案 2 :(得分:0)
是的,你有正确的观点。因为由于括号的顺序首先执行(11/10)操作并且它返回一个圆形的int值并且在点之后丢失了部分(.1)。
答案 3 :(得分:0)