1

我是 Scala 菜鸟。我正在将 python 脚本转换为 Scala。在我的一个例程中,我正在读取 CSV 文件。该列采用科学计数法格式。我在python中的代码是:

"%i" % float(line[USER_ID]) where line[USER_ID] = "9.04E09"

这转换为"9040000000". 我如何在 Scala 中做到这一点?

4

3 回答 3

4

使用 Scala 2.10 字符串插值:

scala> val numString = "9.04E09"
numString: String = 9.04E09

scala> val num = numString.toFloat
num: Float = 9.04E9

scala> val formatted = f"$num%1.0f"
formatted: String = 9040000000

如果您不使用 Scala 2.10,则必须自己进行字符串格式化,这并没有什么不同:

scala> val formatted = format("%1.0f", num)
formatted: String = 9040000000

我还假设您的数据已被清理(即,没有进行验证/异常,以防您的输入字符串未解析为有效的浮点数)。

于 2013-07-09T23:36:13.320 回答
1

Java 方式:(参见此处Java 解析指数符号中的数字

java.lang.Double.valueOf("9.04E09").longValue()

Scala中的另一种方式:

"9.04E09".toDouble.longValue

或者

"9.04E09".toDouble.formatted("%.0f")
于 2013-07-09T23:35:05.170 回答
0

您可以使用 Java API。

scala> val d = new java.lang.Double("9.04E09")
d: Double = 9.04E9

scala> val l = d.longValue
l: Long = 9040000000
于 2013-07-09T23:41:37.827 回答