swift - 使用 Swift 将整数分成 double

标签 swift

func avg(numbers: Int...) -> Double {
    var sum = 0;
    var i = 0;
    for number in numbers {
        sum += number;
        ++i;
    }
    return sum / i;
}
avg(42, 597, 12);

return sum/i 导致错误 Could not find an overload for '/' that accepts the supplied arguments.

我应该在这里做什么?

最佳答案

如果你想返回一个 Double,你应该在你的函数中处理 Double。将 sum 和 i 更改为 Doubles (0.0 vs 0) 并将每个数字转换为 double。像这样:

func avg(numbers: Int...) -> Double {
    var sum = 0.0; //now implicitly a double
    var i = 0.0;
    for number in numbers {
        sum += Double(number); //converts number to a double and adds it to sum. 
        ++i;
    }
    return sum / i;
}
avg(42, 597, 12);

整数和 float 转换

整数和 float 类型之间的转换必须明确:

let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine
// pi equals 3.14159, and is inferred to be of type Double

这里用常量三的值创建了一个Double类型的新值,使得加法两边的类型相同。如果没有适当的转换,则不允许添加。

float 到整数的转换也是如此,因为整数类型可以用 Double 或 Float 值初始化:

let integerPi = Int(pi)
// integerPi equals 3, and is inferred to be of type Int

当以这种方式用于初始化新的整数值时,浮点值总是被截断。这意味着 4.75 变为 4,-3.9 变为 -3。

关于swift - 使用 Swift 将整数分成 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24029990/

相关文章:

ios - Swift - UIToolbar 项目选择状态

swift - 如何在滚动 UITableView 期间制作动画

swift - 为什么便利的初始化器不能在尾随闭包的情况下调用指定的初始化器?

ios - 在 swift 中存储/恢复全局字符串数组时出现问题

swift - 更新到 Swift 3 后奇怪的转义函数行为

mysql - 使用 Perfect - MySQL Connector 启用对 MySQL 数据库的访问

Swiftlint 自动更正不修改文件

ios - 在 UIViewController 的所有现有实例上调用方法

php - 固定 : JSON cannot decode array from php

swift - 从 'NSData' 转换为无关类型 'NSHTTPURLResponse' 总是失败