Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将一个双精度数组转换为字符串,Swift_Arrays_Xcode_Swift - Fatal编程技术网

Arrays 如何将一个双精度数组转换为字符串,Swift

Arrays 如何将一个双精度数组转换为字符串,Swift,arrays,xcode,swift,Arrays,Xcode,Swift,我有一个双打的数组。如何将其转换为控制台上打印的单个字符串 我需要创建一个函数,该函数接受一个double数组作为参数,并返回一个string对象。然后循环遍历每个内部数组,并将内部数组的每个元素连接到一个String对象中。但我不知道该怎么做 var array1 = [2.6, 6.7, 7.2, 4.1, 3.1] var array2 = [1.2, 3.5, 2.8, 4.5, 6.4] var array3 = [1.2, 1.3, 1.4, 1.5, 1.6] var neste

我有一个双打的数组。如何将其转换为控制台上打印的单个字符串

我需要创建一个函数,该函数接受一个double数组作为参数,并返回一个string对象。然后循环遍历每个内部数组,并将内部数组的每个元素连接到一个String对象中。但我不知道该怎么做

var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]

var nestedArray = [array1, array2, array3]
这是我的密码。。。但我不知道如何做一个for循环来给我答案

func nestedFunction(nestedArray: [[Double]]) -> String {
    var stringVar: String = ""

    ( for loop here... )

    return stringVar
}

print(nestedArrayFunction(nestedArray))
预期的输出应该是一个字符串对象,没有括号,因此您可以使用它的属性:

nestedArray.description
输出:

[[2.600000000000001,6.70000000000002,7.2000000000000002,4.0999999999996,3.10000000000001],[1.2,3.5,2.799999999999998,4.5,6.400000000000004],[1.2,1.3,1.3999999999999999,1.5,1.600000000000001]]


这是常规函数用于打印此类数组的内容。

首先,您需要连接或组合现有的数组。您只需创建另一个数组就可以做到这一点,如下所示

let fullArray = array1 + array2 + array3
接下来,您可以打印完整的数组

print(fullArray)
这会给你一些

[2.6000000000000001, 6.7000000000000002, 7.2000000000000002, 4.0999999999999996, 3.1000000000000001, 1.2, 3.5, 2.7999999999999998, 4.5, 6.4000000000000004]
或者可以使用.joinWithSeparator(string:string)方法创建此数组的字符串表示形式,如下所示

let stringRepresentation = fullArray.joinWithSeparator(",")
print(stringRepresentation)
希望这有帮助



如果您希望它不带括号:

let string = nestedArray.flatMap { (array) in
    array.flatMap { String($0) }.joinWithSeparator(",")
}.joinWithSeparator(",")
输出:

"2.6,6.7,7.2,4.1,3.1,1.2,3.5,2.8,4.5,6.4,1.2,1.3,1.4,1.5,1.6"

请注意,使用
作为分隔符不是本地化证明,在法语区域设置中会产生类似“2,6,6,7,7,2”等字符串。

根据您问题中的描述,
嵌套函数(…)
的参数似乎应该是一个具有双值元素的数组(
[[double]]
)而不是包含双值元素的数组(
[double]

您可以使用
.flant()
nestedFunction(…)
中简单嵌套数组
nestedArray
,然后,例如
reduce
将展平数组的
双值元素转换为一个包含
字符串的元素

var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]

var nestedArray = [array1, array2, array3]

func nestedFunction (nestedArray: [[Double]])-> String {
    return String(nestedArray
        .flatten()
        .reduce("") { $0 + ", " + String($1) }
        .characters.dropFirst(2))
}

let asString = nestedFunction(nestedArray)
    // asString = "2.6, 6.7, 7.2, 4.1, 3.1, 1.2, 3.5, 2.8, 4.5, 6.4, 1.2, 1.3, 1.4, 1.5, 1.6"
另一种选择是,如果设置为使用
for
循环,则可以使用
for。。。在展平阵列上的
,例如:

var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]

var nestedArray = [array1, array2, array3]

func nestedFunction (nestedArray: [[Double]])-> String {
    var stringVar: String = ""
    var isFirstElement = true
    for elem in nestedArray.flatten() {
        stringVar += (isFirstElement ? "" : ", ") + String(elem)
        isFirstElement = false
    }
    return stringVar
}

let asString = nestedFunction(nestedArray)
    // asString = "2.6, 6.7, 7.2, 4.1, 3.1, 1.2, 3.5, 2.8, 4.5, 6.4, 1.2, 1.3, 1.4, 1.5, 1.6"
请注意,由于浮点精度有限,在使用直接
字符串
初始值设定项(
String($1)
String(elem))时,某些双精度值可能会以“凌乱”的
String
表示结束(例如
2.6
可能会以
2.6000000000000001
结束)
分别在第一种和第二种方法中)。要兑换此值,您可以使用以下
字符串
初始值设定项为您的
值的
字符串
表示设置固定数量的小数位数:

String(format: "%.3f", myDoubleValue)
    /*             \
           number of fraction digits (3 here) */

例如,将上述方法中的
String($1)
String(elem)
分别替换为
String(格式:“%.3f”、$1)
String(格式:“%.3f”,elem)
Double
值将四舍五入到提供的分数位数。

您能告诉我们预期的输出吗?是的,我也很困惑。我需要创建一个函数,该函数接受一个double数组作为参数,并返回一个string对象。然后循环遍历每个内部数组,并将内部数组的每个元素连接到一个String对象中。但我不知道该怎么做。在上面的例子中,你期望的结果是什么?@VeronicaG很乐意帮忙!