arrays - 将整个数组从 int 转换为 double 以进行一些算术运算

标签 arrays swift integer double typecast-operator

我有这段代码:

    var arrayIntegers : [Int] = []
    arrayIntegers += 0...33
    var arrayDecimal : [Int] = []
    arrayDecimal += 0...999

问题是我无法将两个数组的值都转换为 Double。我想要做的是得到一个新数组(称为 arrayDoubleComposed),它具有复合值,将 arrayIntegers 的值作为整数部分,然后将 arrayDecimal 的另一个值作为浮点部分。

当我尝试对其进行类型转换时:

    var arrayDoubleComposed : [Double] = []
    arrayDoubleComposed = Double (arrayIntegers[] + (arrayDecimal[])/1000)

我有一个错误。如果我抑制 [] 也是一样。

我有点新人,我知道...

最佳答案

将一种数组转换为另一种数组是 map 的工作,它将函数应用于数组的每个元素,并将结果作为函数返回类型的新数组返回。在这种情况下,您需要一个将 Int 转换为 Double 的函数。

尝试这样的事情:

let integers = Array(0...33)
let fractions = Array(0...999)

let arrayDoubleComposed = map(Zip2(integers, fractions)) { 
  (i, f) in 
    Double(i) + Double(f)/1_000 
}

Zip2 获取两个序列并将它们配对——第一个元素在一起,第二个元素在一起等等。然后将其传递到 map 中,后者组合了两个元素。

(另请注意,您可以只从范围初始化数组,而不是声明它们然后添加值)

不清楚您的意思,因为整数和小数数组的长度不同。 Zip2 处理此问题的方式是在第一个序列用完时停止,但这可能不是您想要的。

附言类似于您尝试过的类型转换,它转换数组的内容,仅在从 Objective-C 类型转换为 native Swift 类型的特殊情况下工作,当 Swift 编译器施展魔法时。

关于arrays - 将整个数组从 int 转换为 double 以进行一些算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27668187/

相关文章:

java - 在 Java Card 中将整数的二进制表示形式转换为 ASCII

java - 投票系统java,宣布获胜者

ios - 无法将 CLLocationDegrees 的值转换为预期参数 shopProperties

ios - 在 Swift 4 中检查本地文件大小

swift - iOS 11 拖放 UIDocument

ios - 在运行时添加 UI 元素的问题

c - 这两个指针有何不同?

c++ delete[] 二维数组导致堆损坏

javascript - 尝试将对象数组分组到相同的键下,从而产生新的对象数组

javascript - 如何在 Node js中获取第二个数组?