2012-08-08 101 views
0

我想將字符串轉換爲double。但我得到的數字格式異常。給出例外的代碼是這樣的:java lang NumberFormatException

double B = Double.parseDouble(s); 

我從服務器到我的應用程序的s值。它是這樣的:

fd485b154a0427fa75c0428cdafac71f 

任何解決方案?

+2

'fd485b154a0427fa75c0428cdafac71f'是基數? – 2012-08-08 07:42:42

+1

用0x前綴嗎? – Fakrudeen 2012-08-08 07:44:14

+0

@JigarJoshi我猜十六進制...因爲沒有點或逗號,我想它是一個整數(不是'int',儘管太高了) – brimborium 2012-08-08 07:45:43

回答

1

試試這個:(我假設的字符串是它的0-9 & AF的HEX堂妹)

double doubleVal = new BigInteger("fd485b154a0427fa75c0428cdafac71f", 16).longValue(); 
long longVal = new BigInteger("fd485b154a0427fa75c0428cdafac71f", 16).longValue(); 
System.out.println(doubleVal); 
System.out.println(longVal); 

這給:

8.4848548707027374E18 
8484854870702737183 
0
double B = Double.parseDouble(s); 

這是僅適用於不這樣fd485b154a0427fa75c0428cdafac71f數字值例如只在Doublenon-Numbers String s = "123"; double B = Double.parseDouble(s); System.out.println(B);

2

Double.parseDouble()作品。

2.fd485b154a0427fa75c0428cdafac71f沒有號碼 ......

1

Double.parseDouble(s)做就好了,如果s是數字。顯然你收到的是十六進制的數字。對?

很簡單,因爲這:

double doubleAsLongReverse = new BigInteger(doubleAsString, 16).longValue(); 
0

我會用

double doubleVal = new BigInteger("fd485b154a0427fa75c0428cdafac71f", 16).doubleValue(); 
System.out.println(doubleVal); 

打印

3.366703756933705E38 

如果使用.longValue(),你會被斬去開始由於溢出而導致的數字。

相關問題