NumberFormatException用于输入String" 11111000000000000000"

时间:2015-08-08 16:28:37

标签: java scala

我在 Scala 中尝试了以下命令并获得NumberFormatException,但我不确定原因。这可能是一些基本的东西,但我肯定会欣赏一双额外的眼睛。非常感谢你!

" 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)   在scala.collection.immutable.StringOps.toLong(StringOps.scala:30)
  ...... 33没过了

3 个答案:

答案 0 :(得分:4)

方法

signed decimal long

将字符串参数解析为11111000000000000000(使用10的基数)。 Long,当被视为基数10时,数字大于java.lang.NumberFormatException的最大值,这就是投放Long.parseLong("11111000000000000000", 2) 的原因。

你正在寻找的机会

body {
   padding: 20px;
  text-align:center;
 }
.container {    
    text-align: center;
    }
 h1,
 h2 {
   font-weight: normal;
   color: #0088dd;
   
   text-align: center;
 }
 h1 {
   background-image: url("images/bob.gif");
   background-repeat: no-repeat;
   text-indent: -9999px;
   padding-bottom: 3%;
 }
 h2 {
   display:inline;
   padding: 10px;
   width: 12em;
   font-family: "Gill Sans", Arial, sans-serif;
   font-size: 90%;
   text-transform: uppercase;
   letter-spacing: 0.2em;
   border: 2px solid #0088dd;
   border-right: none;
   border-bottom: none;
   margin: 0 auto;
 }

将数字视为二进制(基数为2)。

否则你可能需要查看java.math.BigInteger,它可以处理任意精度整数。

答案 1 :(得分:3)

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

注意什么?

答案 2 :(得分:2)

长距离为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