簡體   English   中英

線程“main”中的異常java.lang.NumberFormatException:對於輸入字符串:“3291105000”

[英]Exception in thread “main” java.lang.NumberFormatException: For input string: “3291105000”

為什么會這樣? 我正在解析的字符串看起來很像int。 該程序正在從一個文件讀取,我知道它的工作量最大,因為這個數字在列表中。 有任何想法嗎? 此外,該程序正在解析超過22億的整數,所以我不知道它是否是一個大小問題。

帶符號的32位int只能大到2 ^ 31或0x7FFFFFFF(2,147,483,647)。 您需要使用更大的數據類型。 long會讓你達到2 ^ 63。 或者BigInteger類將為您提供任意大小的整數。

int的最小值為-2,147,483,648 ,最大值為2,147,483,647 (含),您的數字(來自字符串)超出范圍

使用long而不是Long.parseLong(3291105000)會對你Long.parseLong(3291105000)

使用long ,可以保存64位整數。

  • int s只能容納大約20億的整數
  • long s可以保持整數〜9e18

像其他人說的那樣,這個數字明顯超出了int的范圍,因此你得到了例外。

4個字節,有符號(二進制補碼)。 -2,147,483,648至2,147,483,647。 像所有數字類型一樣,int可以轉換為其他數字類型(byte,short,long,float,double)。 當完成有損轉換(例如,int到byte)時,轉換以較小類型的長度為模。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM