Java 如何在将双精度值转换为astring后删除其小数点
我想从Java 如何在将双精度值转换为astring后删除其小数点,java,android,Java,Android,我想从double值中删除小数点。我试着把它转换成字符串 double intify(double a) { String s=Double.toString(a); String s2=s.replaceAll(".",""); a=Double.parseDouble(s2); return a; } 如果我通过123.4567,它应该返回1234567。替换正则表达式。您应改为使用: 替换正则表达式。您应改为使用: 使用字符串的方法代替replace
double
值中删除小数点。我试着把它转换成字符串
double intify(double a)
{
String s=Double.toString(a);
String s2=s.replaceAll(".","");
a=Double.parseDouble(s2);
return a;
}
如果我通过123.4567,它应该返回1234567。替换正则表达式。您应改为使用:
替换正则表达式。您应改为使用:
使用字符串的方法代替replaceAll:
String s2 = s.replace(".", "");
As.“.”在正则表达式中有特殊含义,replaceAll将源字符串(即第一个参数)视为正则表达式。而不是replaceAll使用字符串的方法:
String s2 = s.replace(".", "");
As.“.”在正则表达式中有特殊含义,replaceAll将源字符串(即第一个参数)视为正则表达式。您的问题定义得不够好,无法给出一般答案,但如果您想去掉小数部分,只需将其解析为double,然后将其转换为
int
或long
您的问题的定义不足以给出一般的答案,但是如果您想去掉小数部分,只需将其解析为一个double,然后将其转换为int
或long
,下面解决了传入整数(123
或123.0
)或科学记数法(1.23E7
)的问题:
Double.parseDouble(Double.toString(a).replaceAll(“[.]”(?0$)?”,”)代码>
在您的代码中,只需将replaceAll
字符串更改为[.](?0$)?
,该字符串表示“如果小数点后面正好是数字0,并且后面没有任何内容,则删除小数点和数字0”。下面解决了传入整数的问题(123
或123.0
),或科学记数法中的双精度(1.23E7
):
Double.parseDouble(Double.toString(a).replaceAll(“[.]”(?0$)?”,”)代码>
在您的代码中,只需将replaceAll
字符串更改为[.](?0$)?
,该字符串表示“如果小数点后面正好是数字0,并且后面没有任何内容,则删除小数点和数字0”。代码应如何处理固定的小数点?对于输入13.5
或输入3.33333333…
,您希望得到什么结果?代码应该如何处理固定小数?对于输入13.5
或输入3.33333333…
,您期望得到什么结果?在以下两种情况下,此答案和@Mureinik的失败:1)如果传入的双精度是整数,2)如果传入的双精度是科学记数法。在这两种情况下,返回值都是原始数字*10,这可能不是原始海报所期望的。在以下两种情况下,此答案和@Mureinik的失败:1)如果传入的双精度是整数,2)如果传入的双精度是科学记法。在这两种情况下,返回的值都是原始数字*10,这可能不是原始海报所期望的。
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);
}