Caused by: java.lang.NumberFormatException: For input string: "18446744073709551615"


問題:Caused by: java.lang.NumberFormatException: For input string: "18446744073709551615"

原因:18446744073709551615  --有20位,

而long類型的最大長度是: 19位:9223372036854775807

long類型的最大值是9223372036854775807,剛好長度是19個數字

 

解決:

1.類型換成 float, float的最大值為3.403E38, 也就是3.403*10的38次方,這個長度至少在38位吧,夠用了

 

2.BigInteger. 非基本類型,需要用對應的+-*/方法,如下: 

求和:
BigInteger add(BigInteger val) 返回兩個大整數的和
求差:
BigInteger subtract(BigInteger val) 返回兩個大整數的差
求積:
BigInteger multiply(BigInteger val) 返回兩個大整數的積
求商:
BigInteger divide(BigInteger val) 返回兩個大整數的商
求模:
BigInteger mod(BigInteger val) 用當前大整數對val求模
求乘方:
BigInteger pow(int exponent) 返回當前大整數的exponent次方
求余:
BigInteger remainder(BigInteger val) 返回當前大整數除以val的余數


類型轉換:
double doubleValue() 返回大整數的double類型的值
float floatValue() 返回大整數的float類型的值
long longValue() 返回大整數的long型值
int intValue() 返回大整數的整型值


其它:
BigInteger abs() 返回大整數的絕對值
BigInteger gcd(BigInteger val) 返回大整數的最大公約數
BigInteger max(BigInteger val) 返回兩個大整數的最大者
BigInteger min(BigInteger val) 返回兩個大整數的最小者
byte[] toByteArray(BigInteger val)將大整數轉換成二進制反碼保存在byte數組中

詳見:https://blog.csdn.net/weixin_40254218/article/details/79474600

 

3.BigDecimal

BigInteger 任意精度的整數~
可以使用BigDecimal, 支持大整數,浮點運算

long也有限制,不過BigInteger可以存任意大的數

1、有兩個類BigInteger和BigDecimal分別表示大整數類和大浮點數類,可以作為比long還要大的數據類型
2、使用字符串或字符串數組、集合等能夠存儲比long大很多倍的整數變量類型(需數據類型轉換)

Java中為什么float型最大值大於long型?
https://blog.csdn.net/u011240877/article/details/47723263

Java中有比long還大的整數類型嗎
https://zhidao.baidu.com/question/240285392967051564.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM