2015-08-08 40 views
-3

我試圖在斯卡拉以下命令並得到NumberFormatException,但我不知道爲什麼。這可能是一些基本的東西,但我肯定會喜歡一些額外的眼睛。非常感謝!NumberFormatException對於輸入字符串「11111000000000000000」

「11111000000000000000」 .toLong

java.lang.NumberFormatException:對於輸入字符串: 「11111000000000000000」 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在java.lang中.Long.parseLong(Long.java:592)at java.lang.Long.parseLong(Long.java:631)at scala.collection.immutable.StringLike $ class.toLong(StringLike.scala:276) at scala .collection.immutable.StringOps.toLong(StringOps.scala:30)
... 33刪除了

+1

什麼是「長」最大值? – Pshemo

+1

不要忘記選擇一個答案,如果你發現任何有用的答案。 –

回答

3
9223372036854775807 // maximum value of Long 
11111000000000000000 // your value 

注意事項?

+1

問題可以用另一個問題回答嗎? –

+0

@VinceEmigh只要它不是答案的主要部分就行,所以我會說在這種情況下一切都很好。 – Pshemo

+0

@VinceEmigh,顯然,答案是「是」? –

1

長範圍爲64位

–9,223,372,036,854,775,808

9 ,223,372,036,854,775,807 

,或者使用的BigInteger 例如: 使用構造

String val="111110000000000000000" 

BigInteger(String val) 

將BigInteger的十進制字符串表示成BigInteger的。

參考: BigInteger or not BigInteger?

String to BigInteger java

3

方法

Long.parseLong(String s) 

解析字符串參數作爲signed decimal long(使用10基數)。 11111000000000000000,當作爲基數處理時,數字大於最大值Long,這就是爲什麼java.lang.NumberFormatException被拋出。

機會是你要找的

Long.parseLong("11111000000000000000", 2) 

它把數以二進制(基數爲2)。

否則,您可能想查看java.math.BigInteger哪些可以處理任意精度的整數。

相關問題