1

標準 JavaDoubleクラスを使用して仮数付きの浮動小数点数を解析すると、指数から + 記号が省略されるようです。

例えば:

Double.parseDouble("1258124354E-28") returns 1.258124354E-19, but
Double.parseDouble("1243544322E+24") returns 1.243544322E33 (not E+33)

文字列の後処理なしで、Double を使用して + 記号を取得する方法はありますか?

BigDecimalクラスはより良い仕事をします、例えば

new BigDecimal("1243544322E+24").toString() does return 1.243544322E+33

Doubleしかし、集中的な処理で示されるよりも一般的に遅くなります。

4

2 に答える 2

6

aに格納されているdoubleとその文字列表現を区別する必要があります。

Adoubleはテキスト表現をまったく保存しません。1.243544322E331.243544322E+33です。それらは同じ値です。

ここで、値をにフォーマットし直す方法に取り組みたい場合、それは別の問題ですが、実行している解析は問題ありません。情報を失うことはありません。doubleString

于 2012-06-22T22:40:08.507 に答える
2

Jon は上記のように正しく、メモリ内で正しく表現されています。仮数部に + を付けて表示したい場合は、double をフォーマットする文字列について話していることになります。

長い公式フォーマッタ リファレンス

import java.util.Formatter;

double myDouble = Double.parseDouble("1243544322E+24");

Formatter formatter = new Formatter();
formatter.format("%+E", myDouble); //This should return with what you want, though with an extra + infront of the number

私はこのコードを実行していないので、100% 確実に機能するかどうかはわかりません。フォーマット指定子の + は、任意の数値に + または - 記号を配置することを強制します...それは仮数部にまで及ぶと思います。

于 2012-06-22T23:02:05.800 に答える