java lang NumberFormatException

java lang NumberFormatException,java,number-formatting,Java,Number Formatting,我正在尝试将字符串转换为双精度。但是我得到了数字格式的例外。给出异常的代码如下所示: double B = Double.parseDouble(s); fd485b154a0427fa75c0428cdafac71f 我将s值从服务器传递到应用程序。它是这样的: double B = Double.parseDouble(s); fd485b154a0427fa75c0428cdafac71f 有解决办法吗 double B = Double.parseDouble(s); 仅适用于

我正在尝试将字符串转换为双精度。但是我得到了数字格式的例外。给出异常的代码如下所示:

double B = Double.parseDouble(s);
fd485b154a0427fa75c0428cdafac71f
我将s值从服务器传递到应用程序。它是这样的:

double B = Double.parseDouble(s);
fd485b154a0427fa75c0428cdafac71f
有解决办法吗

double B = Double.parseDouble(s);
仅适用于编号,不适用于此类fd485b154a0427fa75c0428cdafac71f值示例
String s=“123”;
double B=double.parseDouble(s);
系统输出打印ln(B)

仅适用于编号,不适用于此类fd485b154a0427fa75c0428cdafac71f值示例
String s=“123”;
double B=double.parseDouble(s);

系统输出打印ln(B)
1.
Double.parseDouble()
仅对
双精度
数字有效,对
非数字
无效


2.
fd485b154a0427fa75c0428cdafac71f
没有数字

1.
双解析双解析()
只对
双解析双解析数字不对
非数字
有效


2.
fd485b154a0427fa75c0428cdafac71f
无编号

用于Apache的Commons编解码器。

用于Apache的Commons编解码器。

您可以使用ByteBuffer类 您可以从字符串s.getBytes()中放入字节,然后调用getDouble()


希望有帮助。

您可以使用ByteBuffer类 您可以从字符串s.getBytes()中放入字节,然后调用getDouble()

希望有帮助。

试试这个:(我假设字符串是0-9&a-f的十六进制coz)

这使得:

8.4848548707027374E18
8484854870702737183
试试这个:(我假设字符串是十六进制的,因为其中有0-9和a-f)

这使得:

8.4848548707027374E18
8484854870702737183
Double.parseDouble(s)
如果
s
是数字,那么它就可以了。很明显,您收到的是十六进制数字。对吗?

很简单:

double doubleAsLongReverse = new BigInteger(doubleAsString, 16).longValue();
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(),由于溢出,您将截断数字的开头。

我将使用

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

3.366703756933705E38

如果使用.longValue(),由于溢出,您将切掉数字的开头。

fd485b154a0427fa75c0428cdafac71f
是哪个基数的数字?@JigarJoshi我猜十六进制。。。由于没有点或逗号,我猜这是一个整数(不是
int
,但太高了)
fd485b154a0427fa75c048cdafac71f
是哪个基数的数字?@JigarJoshi我猜十六进制。。。由于没有点或逗号,我猜它是一个整数(不是
int
,但是太高了)