2016-11-21 10 views
0

ユーザーから文字列として数値を入力し、Doubleオブジェクトに解析する必要があります。両方の小数点区切り文字をカンマとドットで区切ってDoubleに変換する方法

私は小数点区切り記号としてカンマを取ってドットをつけて保存し、ドットだけで出力することができるようにしたいと思います。

例:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
     try { 
      Number number = format.parse(formDto.getWeight()); 
      kitten.setWeight(number.doubleValue()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

しかし、それだけで '' 区切りで値を取得します:22,33 - - > 22.33と22.33> 22.33

私は何を使用することです。ユーザーがドットで入力すると、すべての小数点が失われ、22.33 - > 22.0または4.1 - > 4.0 が返されます。私はそれを解析する問題を理解していますが、それを解決するには何が良いのか分かりません。

+0

指定してくださいプログラミング言語 - それはJavaですか? – lospejos

+0

質問が更新されました。はい、それはJavaです –

答えて

3

Mohitタクールは言ったが、コンパイルのように

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
try { 
    Number number = format.parse(formDto.getWeight().replace('.', ',')); 
    kitten.setWeight(number.doubleValue()); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

おかげでEstanislao、あなたの修正のために。 –

3

ドットを "。"に置き換えることができます。カンマで:。、」構文解析の前に

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
    try { 
     Number number = format.parse(formDto.replace('.', ',').getWeight()); 
     kitten.setWeight(number.doubleValue()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
0

一度これを試してみてください。

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
     try { 
      Number number = Double.parseDouble(format.replace(",", ".").getWeight()); 
      kitten.setWeight(number.doubleValue()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

おかげ

0

場合。 StringをDouble値に変換したい場合は、以下の方法で行うことができます

String numberStr1 = "22,33"; //number with comma as decimal separator 
String numberStr2 = "22.33"; //number with dot as decimal separator 

System.out.println(numberStr1.contains(",") ? Double.valueOf(numberStr1.replace(',', '.')):Double.valueOf(numberStr1)); 
System.out.println(numberStr2.contains(",") ? Double.valueOf(numberStr2.replace(',', '.')):Double.valueOf(numberStr2)); 

私はこのタスクを達成するためにJava Tertiary Operatorを使用しました。画面に印刷する代わりに二重の値を格納することができます。

これが役に立たない場合や、NumberFormatで具体的に行う場合は、コメントでお知らせください。

関連する問題