我想將字符串轉換爲double。但我得到的數字格式異常。給出例外的代碼是這樣的:java lang NumberFormatException
double B = Double.parseDouble(s);
我從服務器到我的應用程序的s值。它是這樣的:
fd485b154a0427fa75c0428cdafac71f
任何解決方案?
我想將字符串轉換爲double。但我得到的數字格式異常。給出例外的代碼是這樣的:java lang NumberFormatException
double B = Double.parseDouble(s);
我從服務器到我的應用程序的s值。它是這樣的:
fd485b154a0427fa75c0428cdafac71f
任何解決方案?
試試這個:(我假設的字符串是它的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
double B = Double.parseDouble(s);
這是僅適用於不這樣fd485b154a0427fa75c0428cdafac71f數字值例如只在Double
號,上non-Numbers
不 String s = "123"; double B = Double.parseDouble(s); System.out.println(B);
Double.parseDouble()
作品。
2.fd485b154a0427fa75c0428cdafac71f
是沒有號碼 ......
使用Hex
在Apache的共享編解碼器。
可以使用的ByteBuffer http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html類 你可以把從字符串s.getBytes()個字節,然後調用getDouble()
希望它能幫助。
Double.parseDouble(s)
做就好了,如果s
是數字。顯然你收到的是十六進制的數字。對?
很簡單,因爲這:
double doubleAsLongReverse = new BigInteger(doubleAsString, 16).longValue();
我會用
double doubleVal = new BigInteger("fd485b154a0427fa75c0428cdafac71f", 16).doubleValue();
System.out.println(doubleVal);
打印
3.366703756933705E38
如果使用.longValue(),你會被斬去開始由於溢出而導致的數字。
'fd485b154a0427fa75c0428cdafac71f'是基數? – 2012-08-08 07:42:42
用0x前綴嗎? – Fakrudeen 2012-08-08 07:44:14
@JigarJoshi我猜十六進制...因爲沒有點或逗號,我想它是一個整數(不是'int',儘管太高了) – brimborium 2012-08-08 07:45:43