私は次のコードを持っています:
NumberFormat nf=NumberFormat.getInstance(Locale.FRANCE);
nf.setMinimumFractionDigits(3);
String s= nf.format(3456.32);
// double d= Double.valueOf(s); error here
System.out.println(s);
このコードは次を表示します。
3 456,320
今までは良かったのですが、JFormattedTextField から同じ形式を取得したときに、"3 456,320" を文字列として double(3456.32) に変換する方法を想像してみてください。
私はすでにこれを試しました:
String s="3 456,320";
double d= Double.valueOf(s);
しかし、私はエラーが発生します...
編集:
いくつかのテストの後、コードがそれほど堅牢ではないことがわかりました。たとえば、次のようになります。
//this works
String s="3456,6567";
NumberFormat nf1=NumberFormat.getInstance(Locale.FRANCE);
double d = (double) nf1.parse(s);
しかし、これは:
String s="3456,0";
NumberFormat nf1=NumberFormat.getInstance(Locale.FRANCE);
double d = (double) nf1.parse(s);
このエラーが発生します:
スレッド「メイン」での例外 java.lang.ClassCastException: java.lang.Long は java.lang.Double にキャストできません
短所として、これは非常に堅牢だと思います:
double d = nf1.parse(s).doubleValue();
ソフトウェアを数回テストする必要があります!!!