我有一個這樣的文件:如何處理十進制數在斯卡拉
1 4.146846
2 3.201141
3 3.016736
4 2.729412
我想用toDouble
但是,它不是按預期工作:
val rows = textFile.map { line =>
val fields = line.split("[^\\d]+")
((fields(0),fields(1).toDouble))
}
val Num = rows.sortBy(- _._2).map{case (user , num) => num}.collect.mkString("::")
println(Num)
結果打印出來的4.0::3.0::3.0::2.0
。
我期望的是4.146846::3.201141::3.016736::2.729412
我該怎麼做?
另見http://stackoverflow.com/questions/12643009/regular-expression-for-floating-point-numbers – Odomontois
嘛....問題你的正則表達式...'「[^ \\ d] +」'它將行分割爲3.'fields:Array [String] = Array(1,4,146846)'。 –
只需將您的正則表達式更改爲'「[^ \\ d。] +」'。 –