フォーマットなしのJava DoubleからStringへの変換
質問
番号654987があります。データベース内のIDです。文字列に変換したいです。 通常のDouble.ToString(value)は、科学形式6.54987E5になります。したくないもの。
私が見つけた他のフォーマット関数は、現在のロケールをチェックし、適切な千の区切り文字などを追加します。 IDなので、フォーマットは一切受け付けません。
実行方法
[編集]明確にするために:すべての数値列をdoubleとして扱う特別なデータベースに取り組んでいます。 Doubleは、データベースから取得できる唯一の(数値)タイプです。
解決
ロングを使用:
long id = 654987;
String str = Long.toString(id);
他のヒント
固定 NumberFormat
(具体的には、 DecimalFormat
):
double value = getValue();
String str = new DecimalFormat("#").format(value);
別の方法として、単に int
(または値の範囲が大きすぎる場合は long
)にキャストします:
String str = String.valueOf((long) value);
それではまた、最初の場所で double
変数に整数値(つまり、「全体」の数字)があるのはなぜですか?
データベース内の整数IDの場合、代わりに整数を使用します。その後、整数としてフォーマットされます。
String.valueOf((long)value);はどうですか
概要:
Long.toString(value)
または
new String(value)
使用することもできます
double value = getValue();
NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);
String strVal = f.format(value);
保存しているのがID(つまり、実際の数値に意味がない別のエンティティを識別するためだけに使用されるもの)である場合、Doubleを使用して保存しないでください。精度はほぼ確実にあなたを台無しにします。
データベースで整数値が許可されていない場合は、IDを文字列として保存する必要があります。必要に応じて、文字列を使用する整数の文字列表現にします。先行ゼロを適切に使用すると、文字列のアルファベット順をintの数値順と同じにすることができます。
これで問題を回避できます。
Long.toString((long)value)はどうですか?
double d = 56789;
String s = d+"";