9

私のプログラムはいくつかの入力(a String)を受け取ります。double入力がのようなaの形式である可能性はかなりあります"1.5"。しかし、私はそれをに変換したいintegerので、私はただので終わることができ1ます。

まず、私はこれを試しました:

Integer.parseInt(someString);

しかし、それは機能しません-ドットが原因で.解析できないと思います。

だから私は多分Integerクラスがintegerからを作成できると思いましたdouble。そこでdouble、次のようにを作成してから作成することにしましたint

Integer.parseInt(Double.parseDouble(someString));

しかし、どうやらあります

parseInt(double)に適したメソッドが見つかりません

それで、あなたは何を提案しますか?このためのワンライナーはありますか?ドットとその後のすべての文字を削除する方法を考えました...しかし、それはあまりクールに聞こえません。

4

5 に答える 5

9

数値を として解析しdouble、後で別の型に変換しても安全です。このような:

// someString = "1.5";
double val = Double.parseDouble(someString);  // -> val = 1.5;
int intVal = (int) Math.floor(val);           // -> intVal = 1;

Java 7 (以前の JVM ではテストされていませんが、動作するはずです) では、これも上記と同じ結果になることに注意してください。

int intVal = (int) Double.parseDouble(someString);

float 値から int への変換は、丸めなしで小数を削除するためです。

于 2012-09-24T02:00:51.390 に答える
5

キャストを使用します。

double val = Double.parseDouble(someString);  
int intVal = (int) Math.floor(val);   
于 2012-09-24T02:02:34.020 に答える
2

あなたは を持っているDoubleと思いDouble.parseDoubleます. したがって、次を使用してください:

int i = (int) Double.parseDouble(someString);
于 2012-09-24T02:01:45.353 に答える
1

試す、

int no= new Double(string).intValue();
于 2012-09-24T02:01:08.270 に答える
1

これを試して:

1) 文字列を double として解析する 2) double から int にキャストする

public static void main(String[] args) {
    String str = "123.32";
    int i = (int) Math.floor(Double.parseDouble(str));
    System.out.println(i);

}
于 2012-09-24T02:03:45.807 に答える