2012-09-24 3 views
7

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

Integer.parseInt(someString); 

しかし、それは動作しません - 私はそれが原因で、それはそれを解析することはできませんドット.であると仮定しています:

まず、私はこれを試してみました。

Integerクラスは、からintegerを作成できると考えました。だから私はこのように、doubleを作成し、それをintを作ることを決めた:

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

をしかし、どうやら(ダブル)だから、

のparseInt見つかり

もし適切な方法はありません、 何を指示してるんですか?これには1ライナーがありますか?私はドットとその後のすべての文字を削除する方法を考えた...しかし、それは非常にクールな音ではありません。

答えて

7

数字をすべてdoubleとして解析してから別のタイプに変換することは安全です。変換として

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

:Javaの7(以前のJVMでテストが、私はそれがあまりにも動作するはずだと思うではない)で、これも上記と同じ結果が得られることを

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

注:このように浮動小数点型から整数型への変換では、小数点以下は切り捨てられません。

+0

intにdoubleから)2 ダブルキャストとして文字列を解析!完全に忘れました。ありがとうございました。 – Voldemort

1

あなたはDoubleを持って、

int no= new Double(string).intValue(); 
2

を試してみて、私はDouble.parseDoubleで、想定しています。ですので、そのまま使用してください:

int i = (int) Double.parseDouble(someString); 
+1

... 'Double.parseDouble(str)'は 'double'を返します。したがって、プリミティブに対して' intValue() 'を呼び出すことはできません。 –

+0

ああ、優れた点。編集をありがとう! 'new Double(String)'アプローチを使うこともできます。 – craigmj

4

キャスティングを使用してください。

double val = Double.parseDouble(someString); 
int intVal = (int) Math.floor(val); 
1

これを試してみてください:

1)...キャスト

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

} 
関連する問題