0

文字列を double に変換しようとしています。しかし、数値形式の例外が発生しています。例外を与えるコードは次のようになります。

double B = Double.parseDouble(s);

サーバーからアプリケーションに s 値を取得します。そして、それはこのようなものです:

fd485b154a0427fa75c0428cdafac71f

解決策はありますか?

4

7 に答える 7

2

1. NumbersDouble.parseDouble()のみ機能し、 では機能しませんDouble non-Numbers

2. 番号fd485b154a0427fa75c0428cdafac71fはありません......

于 2012-08-08T07:49:33.297 に答える
1

これを試してください: (文字列は 0-9 & af の HEX coz であると想定しています)

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
于 2012-08-08T07:50:59.290 に答える
1

Double.parseDouble(s)の場合sは問題なく動作しています。どうやら、16進数で数値を受け取っているようです。右?

次のように簡単です。

double doubleAsLongReverse = new BigInteger(doubleAsString, 16).longValue();
于 2012-08-08T07:55:55.880 に答える
0

私は使うだろう

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

プリント

3.366703756933705E38

.longValue()を使用すると、オーバーフローのために数値の先頭を切り落とすことになります。

于 2012-08-08T08:11:33.763 に答える
0

HexApache の Commons Codec で使用します。

于 2012-08-08T07:49:35.360 に答える
0

ByteBuffer クラスを使用できますhttp://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html 文字列 s.getBytes() からバイトを配置してから getDouble() を呼び出すことができます

それが役に立てば幸い。

于 2012-08-08T07:49:58.133 に答える
0
double B = Double.parseDouble(s);

これは、そのような fd485b154a0427fa75c0428cdafac71f 値の例ではなく、数値に対してのみ機能します String s = "123"; double B = Double.parseDouble(s); System.out.println(B);

于 2012-08-08T07:45:10.890 に答える