Arrays 比较双Swift 4的两个数组

Arrays 比较双Swift 4的两个数组,arrays,swift,compare,double,Arrays,Swift,Compare,Double,有两个双精度数组,我想比较它们并创建一个新的数组,结果不同,但不知道如何创建一个循环。请告知 此处的阵列示例: var freshRates = [1.6,1.7,2.0] var oldRates = [1.5,1.4,1.9] var difference: [Double] = [] 压缩数组以获得元组数组,然后仅使用map计算每对的差异: var freshRates = [1.6,1.7,2.0] var oldRates = [1.5,1.4,1.9] var differe

有两个双精度数组,我想比较它们并创建一个新的数组,结果不同,但不知道如何创建一个循环。请告知

此处的阵列示例:

 var freshRates = [1.6,1.7,2.0]
 var oldRates = [1.5,1.4,1.9]
 var difference: [Double] = []

压缩数组以获得元组数组,然后仅使用map计算每对的差异:

var freshRates = [1.6,1.7,2.0]
var oldRates = [1.5,1.4,1.9]
var difference: [Double] = zip(freshRates, oldRates).map({ $0.0 - $0.1 })

比较类似问题的不同解决方案在你的情况下,这将是
let difference=zip(freshRates,oldRates)。地图(-)
感谢你提供的信息,只是第一次没有通过关键词找到。再次感谢@Milan提供的解决方案,非常感谢你对我的项目的帮助。只需再问一个问题,之后就可以减少数量。因为现在在印刷品中,它给出了[0.100000000000009,0.300000000004,0.100000000000009]@Ula:这在中有解释(这是关于字典中的浮点数,但也适用于数组)。基本原因是
0.1
不能精确地表示为二进制浮点数。另请参见@Ula我正要回复,这时Martin R发表了评论-所以请阅读链接答案。您将在
let result:Double=1.6-1.5
中得到相同的结果。。打印它的原因是打印整个数组的结果,如果只打印
差异[0]
,它将打印
0.1
-我不确定为什么数组的字符串描述显示为that@MilanNosáľ:这是因为打印数组(或字典)使用
debugPrint()
打印其元素,比较一下。谢谢你们在这个问题上的支持。谢谢你们的回答,这个解决方案也很好用。
var freshRates = [1.6,1.7,2.0]
var oldRates = [1.5,1.4,1.9]
var difference: [Double] = []

for (val1,val2) in zip(freshRates, oldRates){
    difference.append(val2 - val1)
}

debugPrint(difference)