web-dev-qa-db-ja.com

JavaフォーマットなしのDoubleからStringへの変換

私は番号654987を持っています。データベース内のIDです。文字列に変換したいです。通常のDouble.ToString(value)は、科学形式6.54987E5になります。私がしたくないもの。

私が見つけた他のフォーマット関数は、現在のロケールをチェックし、適切な千の区切り文字などを追加します。 IDなので、どのフォーマットも受け入れられません。

どうやってするの?

[編集]明確にするために:すべての数値列をdoubleとして扱う特別なデータベースに取り組んでいます。 Doubleがデータベースから取得できる唯一の(数値)タイプです

29
Mizipzor

ロングを使用:

long id = 654987;
String str = Long.toString(id);
20
alphazero

固定の NumberFormat を使用します(具体的には DecimalFormat ):

double value = getValue();
String str = new DecimalFormat("#").format(value);

または、単にint(または値の範囲が大きすぎる場合はlong)にキャストします:

String str = String.valueOf((long) value);

しかし、もう一度:そもそもdouble変数に整数値(つまり「全体」の数値)があるのはなぜですか?

32
Joachim Sauer

データベース内の整数IDの場合は、代わりに整数を使用します。次に、整数としてフォーマットします。

6
Ned Batchelder

String.valueOf((long)value);はどうですか

6
rsp

また、使用することができます

double value = getValue();

NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);

String strVal = f.format(value);
2
Bobs

どうですか:

Long.toString(value)

または

new String(value)
2
Eemeli Kantola

格納するものがID(つまり、実際の数値に意味がない別のエンティティを識別するためだけに使用されるもの)である場合、Doubleを使用して格納しないでください。精度はほぼ間違いなくあなたを台無しにします。

データベースで整数値が許可されていない場合は、IDを文字列として保存する必要があります。必要に応じて、文字列を使用する整数の文字列表現にします。先行ゼロを適切に使用すると、文字列のアルファベット順をintの数値順と同じにすることができます。

これで問題を解決できます。

1
DJClayworth

Long.toString((long)value)はどうですか?

0
Yotam Abramson