4

文字列をに変換しようとしていますが、。Integer/Float/Doubleを取得しましたNumberFormatException

私の文字列は37,78584、今私はこれを私が得たそれらのいずれかに変換していますNumberFormatException

どうすればこれstringをそれらのいずれかに変換できますか。

この問題から抜け出すのを手伝ってください。

4

9 に答える 9

12

次のような番号に適切なロケールを使用する必要があります

String s = "37,78584";
Number number = NumberFormat.getNumberInstance(Locale.FRENCH).parse(s);
double d= number.doubleValue();
System.out.println(d);

プリント

37.78584
于 2012-09-11T08:16:15.580 に答える
1

,文字列を空白に置き換えて""から、数値を変換します

String str = "37,78584";
str = str.replaceAll("\\,","");
于 2012-09-11T08:13:19.453 に答える
1

文字列値を確認してください

それ

if(String .equals(null or ""){

} else{
    //Change to integer
}
于 2012-09-11T08:23:48.290 に答える
1

のようなメソッドを使用することは、その動作がロケールに依存するため、最良の選択ではありませんType.parseSomethingType.valueOfたとえば、一部の言語では、小数点は「。」です。他の'、'にあるときの記号。したがって、一部のシステムではコードが正常に機能し、他のシステムではクラッシュして例外がスローされます。より適切な方法は、フォーマッターを使用することです。JDKとAndroidSDKには、ロケールに依存しない多くの目的ですぐに使用できるフォーマッターが多数あります。NumberFormatをご覧ください

于 2012-09-11T08:41:03.547 に答える
1

ベストプラクティスは、フランス語ロケールなど、区切り文字としてコンマを使用するロケールを使用することです。

double d = NumberFormat.getNumberInstance(Locale.FRENCH).parse("37,78584").doubleValue();

最速のアプローチは、コンマをピリオドに置き換えることです。

double d = String.parseDouble("37,78584".replace(",","."));
于 2012-09-11T08:50:02.837 に答える
0

解析してコンマを削除する前に、これを実行してください。

myString.replaceAll(",", "")​;
于 2012-09-11T08:13:26.747 に答える
0

まず,、以下のコードを使用して、これを削除します

String s= "37,78584";
s=s.replaceAll(",", "");

そして、以下のコードを使用します

文字列から整数へ:-

Integer.parseInt(s);

文字列をフロートさせる場合:-

Float.parseFloat(s);

文字列を2倍にする場合:-

Double.parseDouble(s);
于 2012-09-11T08:14:18.360 に答える
0

交換 '

String value  = "23,87465";
int value1 = Integer.parseInt(value.toString().replaceAll("[^0-9.]",""));
于 2012-09-11T08:27:45.673 に答える
-1

を置き換えて,から、Integer / float/doubleに変換してみてください

String mysting="37,78584";
String newString=myString.replace(",", "");
int value=Integer.parseInt(newString);
于 2012-09-11T08:18:10.243 に答える