2009-04-29 5 views
0

DecimalFormat params Double.toString()(これは科学的および財務的な形式である可能性があります)表現です。DecimalFormatとdoubles

DoubleがStringに直接変換するのではなく、このアプローチを選択した理由を教えてください。

PS: 具体的には、 Double自体の内部表現を書式設定する代わりに、DecimalFormatが内部的にDoubleをフォーマットするためにDouble.toString()を使用するのはなぜですか?

+0

「直接変換」とはどういう意味ですか? – Eddie

+0

あなたが求めていることを明確にすることはできますか?私はあなたが "doubleをStringに直接変換する"という意味を知らない。 OpenJDKでは、Double.toString()はString.valueOf(value)を返します。valueはプリミティブdoubleです。これは新しいFloatingDecimal(d).toJavaFormatString()を呼び出すDouble.toString(d)を与え、最終的に実際の作業を行います。 –

答えて

2

DecimalFormatを使用すると、書式設定パターンを指定できるようになり、書式をより詳細に制御できます。

+0

あなたに同意しますが、ここではDecimalFormatが内部的に書式設定を行う方法について質問しています。 –

0

"Double.toString(withSomeParameters)"がDecimalFormatを使用する代わりにジョブを実行するように彼に聞かれるかもしれません。

私はその理由が、i18nかもしれないと思います。ある場所では1,800.39と入力することができます。何か別の場所に入力することができます1.800,39

0

「直接変換する」という意味はわかりませんが、toString()は常にデバッグ情報です。フロントエンドの値を表示するためには使用しないでください。解析と書式設定にはDecimalFormatを使用してください。

+0

私が聞いていたこと。 DecimalFormatが内部的にDouble.toString()の結果を使用して、Double自身の内部表現を書式設定する代わりに、Doubleを書式設定する理由 –

-1

financialアプリケーションでは、代わりにBigDecimalを使用して、丸めモードと精度を制御できます。

+0

実際には、倍精度をフォーマットするアプリケーションに関する質問です。 –

+0

OK、気にしないでください... – KarlP

0

おそらくサンはDRYの原則に従っています。

関連する問題