我正在根据 swift 教程进行平均函数分配。 当我写这样的代码时:
func AVG(numbers: Int...) -> Double {
var i=0, sum=0; var avg: Double
for number in numbers {
i+=1
sum+=number
avg = sum/i
}
return avg
}
let Average = AVG(numbers: 3,4,5)
print (Average)
它显示一条错误消息,显示二元运算符“/”不能应用于两个 int 操作数。
当我执行像
这样的简单除法时let x = 5
let y = 2
let quo = x/y
有效。
我在函数中做错了什么?
最佳答案
您将 avg
声明为 Double 类型。
numbers
的类型是 Int
,i=0
也是 Int
。
当您执行 sum/i
时,它是 Int/Int
并且您尝试将其分配给 Double
。
Swift 不会自动进行转换——它会强制您手动转换数据类型。
您可以通过简单地将这两个变量转换为 Double 来修复它。
请记住,您需要在进行除法之前转换 Int - 否则结果将切断提醒,因为 Int 不能拥有它们。感谢@martin
另外一个问题是,如果您的数字数组为空,您可能会尝试返回未初始化的变量 avg
。
下面的工作代码:
func AVG(numbers: Int...) -> Double {
var i=0, sum=0; var avg: Double = 0
for number in numbers {
i+=1
sum+=number
avg = Double(sum)/Double(i)
}
return avg
}
let Average = AVG(numbers: 3,4,5)
print (Average)
关于swift - 无法快速执行除法功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974157/