1

Javaで文字列を数値に変換したい。私はすでに2つの方法を試しましたが、どちらも整数ではうまく機能せず、不要な浮動小数点が追加されました: "1" > 1.0 ("1" > 1および "1.5" > 1.5が必要な場合)。文字列を数値に変換する方法をさらにいくつか見つけましたが、それらは機能しないか、行数が多いため、parseFloat() のみが必要な JavaScript から来るとは思えません。

これは私が今試していることです:

String numString = "1".trim().replaceAll(",","");
float num = (Float.valueOf(numString)).floatValue(); // First try
Double num2 = Double.parseDouble(numString); // Second try
System.out.println(num + " - " + num2); // returns 1.0 - 1.0

必要なときだけ浮動小数点を取得するにはどうすればよいですか?

4

3 に答える 3

3

float を希望どおりにフォーマットするには、DecimalFormatを使用します。

DecimalFormat df = new DecimalFormat("#.###");
System.out.println(df.format(1.0f)); // prints 1
System.out.println(df.format(1.5f)); // prints 1.5

あなたの場合、使用できます

System.out.println(df.format(num) + " - " + df.format(num2));
于 2012-12-29T19:42:29.077 に答える
1

あなたが探しているのはDecimalFormat

DecimalFormat format = new DecimalFormat("#.##");
double doubleFromTextField = Double.parseDouble(myField.getText());
System.out.println(format.format(doubleFromTextField));
于 2012-12-29T19:43:21.783 に答える
0

問題は、タイプセーフな言語での質問にあり、変換と文字列表現が混在していると思います。Java または C# または C++ では、予測可能な/期待される型に変換します。これは、JavaScript で慣れ親しんだ「バリアント」動作を期待しているように見えます。

タイプセーフな言語でできることは次のとおりです。

public static Object convert(String val)
{
  // try to convert to int and if u could then return Integer
  ELSE
  //try to convert to float and if you could then return it
  ELSE
  //try to convert to double
  etc...
}

もちろん、JavaScript が C++ や Java と比較されるのと同じように、これは非常に非効率的です。バリアント/ポリモーフィズム (オブジェクトを使用) にはコストがかかります

次に、 toString() を実行して、整数としてフォーマットされた整数、float として float、および double としてポリモーフィックに取得できます。しかし、あなたの質問はせいぜいあいまいであるため、概念的な問題があると私は信じています。

于 2012-12-29T19:45:44.850 に答える