【发布时间】:2017-08-07 12:30:44
【问题描述】:
我在对一些数字进行排序时遇到问题,这些数字首先是字符串。这些数字对于 UInt64 来说太大了,所以我将字符串数字转换为浮点数,然后对其进行排序。效果很好。但是然后我需要打印这些没有小数的数字。所以我试图格式化数字。但是更大的数字在格式化后会改变它的值。
这是要排序的输入数组 -
["6","31415926535897932384626433832795","1","3","10","3","5"]
我需要以这种格式打印输出 -
1
3
3
5
10
31415926535897932384626433832795
这是我的 swift 代码 -
import Foundation
var a = Array<Float>()
var b = ["6","31415926535897932384626433832795","1","3","10","3","5"]
a = b.map{ Float($0)! }
for i in 0..<(a.count-1){
var min = i
for j in (i+1)..<a.count{
if a[j] < a[min] {
min = j
}
}
var temp = a[i]
a[i] = a[min]
a[min] = temp
}
for val in a{
print(String(format: "%.0f",val.rounded(.down)))
}
我的输出是 -
1
3
3
5
6
10
31415927314585224784361549725696
如果您注意到最后一个最大的数字与原始输入不同。我们欢迎所有的建议!谢谢!
【问题讨论】:
-
排序与您的问题无关。如果您在排序之前执行
for val in a{ print(String(format: "%.0f",val.rounded(.down)))}(就在b.map{ Float($0)! }之后),您会注意到同样的问题。 -
使用
Float,["6","31415926535897932384626433832797","31415926535897932384626433832796","31415926535897932384626433832795","1", "3"]的排序输出为["1", "3", "6", "31415926535897932384626433832797", "31415926535897932384626433832796", "31415926535897932384626433832795"]。你能接受这个结果吗? -
stackoverflow.com/questions/30260769/…。这会对你有所帮助。