2015-02-07 103 views
0

我想從double值中刪除小數點。我試圖將其轉換爲字符串如何在將小數點轉換爲字符串後從小數點中刪除小數點

double intify(double a) 
{ 
    String s=Double.toString(a); 
    String s2=s.replaceAll(".",""); 
    a=Double.parseDouble(s2); 

    return a; 

} 

如果我通過123.4567它應該返回1234567

+2

該代碼應該如何處理固定的十進制數?你期望輸入「13.5」或輸入「3.33333333 ...」的結果是什麼? – Rikkles 2015-02-07 08:14:16

回答

0

相反的replaceAll的使用String replace方法:

String s2 = s.replace(".", ""); 

爲 「」在regex中具有特殊含義,replaceAll將源字符串即第一個參數視爲正則表達式。

+0

這個答案和@ Mureinik在以下兩種情況下都失敗了:1)如果傳入double是一個整數,並且2)如果傳入double是科學記數法。在這兩種情況下,返回的值都是原始數字* 10,這可能不是原始海報的預期值。 – Rikkles 2015-02-07 08:23:42

-2

你的問題對於普通答案的定義不夠好,但是如果你想擺脫小數部分,只需將其解析爲雙精度型,然後將其轉換爲intlong

0

以下解決了(123123.0)傳遞一個整數的問題,或者用科學計數法(1.23E7)雙:

Double.parseDouble(Double.toString(a).replaceAll("[.](?0$)?",""));

在你的代碼,只是改變了replaceAll字符串[.](?0$)?,其中規定「刪除小數點以及數字0,如果它正好在小數點後面,並且之後沒有任何數字」。

0
Double i=Double.parseDouble("String with double value"); 


    Log.i(tag,"display double "+i); 


    try{ 
     NumberFormat nf = NumberFormat.getInstance(); 
     nf.setMaximumFractionDigits(0);// set as you need 
     String myStringmax = nf.format(i); 


     String result = myStringmax.replaceAll("[-+.^:,]",""); 
     Double i=Double.parseDouble(result); 

     int max= Integer.parseInt(result); 


    }catch(Exception e){ 
     System.out.println("ex="+e); 
    } 
相關問題