与此python代码等效的scala代码是什么:“quot;%我";%浮子(9.04E09)

与此python代码等效的scala代码是什么:“quot;%我";%浮子(9.04E09),scala,Scala,我是一个无足轻重的人。我正在将python脚本转换为Scala。在我的一个例行程序中,我从CSV文件中读取数据。该列采用科学符号格式。我的python代码是: "%i" % float(line[USER_ID]) where line[USER_ID] = "9.04E09" 这将转换为“9040000000”。如何在Scala中实现这一点?Java方式:(请参见此处) Scala中的另一种方式: "9.04E09".toDouble.longValue 或 Java方式:(请参见此处)

我是一个无足轻重的人。我正在将python脚本转换为Scala。在我的一个例行程序中,我从CSV文件中读取数据。该列采用科学符号格式。我的python代码是:

"%i" % float(line[USER_ID]) where line[USER_ID] = "9.04E09"
这将转换为
“9040000000”
。如何在Scala中实现这一点?

Java方式:(请参见此处)

Scala中的另一种方式:

"9.04E09".toDouble.longValue

Java方式:(请参见此处)

Scala中的另一种方式:

"9.04E09".toDouble.longValue


使用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

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

使用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

我还假设您的数据经过清理(即,如果您的输入字符串未解析为有效的浮点值,则不会执行任何验证/异常)。

您可以使用Java API

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

scala> val l = d.longValue
l: Long = 9040000000

您可以使用JavaAPI

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

scala> val l = d.longValue
l: Long = 9040000000

我应该提到,我假设您希望输出保持为字符串,因为这是原始Python版本中的内容。如果您希望它是一个实际的数字类型,那么Brian和Eran的答案可能更好。我应该提到,我假设您希望输出保持为字符串,因为这是您在原始Python版本中所拥有的。如果你希望它是一个真正的数字类型,布赖恩和埃兰的答案可能更好。