2012-09-24 24 views
7

Programım bazı girişler (String) alıyor. Girdiğin, "1.5" gibi bir double biçiminde olması oldukça olasıdır. Ama ben onu bir integer'a dönüştürmek istiyorum, bu yüzden sadece bir 1 ile bitirebilirim.ParseInt'i bir çift için nasıl kullanabilirim?

Integer.parseInt(someString); 

Ama çalışmıyor - Ben çünkü bunu ayrıştırmak olamaz nokta . ait olduğunu varsayarak yaşıyorum:

Önce bu çalıştı.

Bu yüzden, Integer sınıfının double numaralı telefondan bir integer oluşturabileceğini düşündüm. Yani ben böyle bir double oluşturmak ve sonra onu bir int yapmaya karar verdi:

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

Ama görünüşe (çift) Böylece

parseInt bulundu

uygun bir yöntem yoktur , sen ne önerirsin? Bunun için tek linerler var mı? Noktaları ve tüm karakterleri ortadan kaldıran bir yöntem yapmayı düşündüm ... ama bu pek hoş gelmiyor.

cevap

7

Herhangi bir sayıyı double olarak ayrıştırmak ve sonra başka bir türe dönüştürmek güvenlidir. dönüştürme olarak

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

: Bu gibi:

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

Java 7 ile (daha önce JVM ile test, ama çok çalışması gerektiğini düşünüyorum) Not olduğu, bu da yukarıdaki gibi aynı sonucu verecektir kayan bir değerden bir int'ye, yuvarlama olmadan herhangi bir ondalık değeri bırakır.

+0

int çift itibaren) 2 çift döküm olarak dizgesini çözümler! Tamamen unuttun. Teşekkür ederim. – Voldemort

1

deneyin,

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

Sen Double.parseDouble ile sanırım, Double var. Bu nedenle, sadece döküm kullanın:

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

... 'Double.parseDouble (str)' dışında bir 'double' döndürür ve bu nedenle bir ilkelde' intValue() 'diyemezsiniz. –

+0

Ah, mükemmel nokta. Düzenleme için teşekkürler! “Yeni Double (String)” yaklaşımını da kullanabilirsiniz. – craigmj

4

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

bu deneyin:

1) ... döküm

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

} 
İlgili konular