2015-02-07 139 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); 
    } 
相关问题