2013-07-09 77 views

回答

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 

我還假設您的數據消毒(即如果您的輸入字符串不解析爲有效的浮點數,則不會執行驗證/異常。

+4

或者對於2.10之前的人羣:'「%1.0f」.format(num)'。 –

+0

我應該提到,我認爲你希望輸出保持一個字符串,因爲這就是你的原始Python版本。如果你希望它是一個實際的數字類型,Brian和Eran的答案可能會更好。 –

+0

這工作。謝謝。 –

1

Java的方式:(看到這裏還有Java parse a number in exponential notation

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

Scala中的另一種方式:

"9.04E09".toDouble.longValue 

或者

"9.04E09".toDouble.formatted("%.0f") 
0

您可以使用Java API。

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

scala> val l = d.longValue 
l: Long = 9040000000 
相關問題