黑马程序员技术交流社区
标题:
看到一道题,不知道怎么做
[打印本页]
作者:
run_wind
时间:
2014-12-31 17:54
标题:
看到一道题,不知道怎么做
给一个小数取出小数点后几位(正则)
这个题不会做。求解,是不是写规则然后匹配后面有几位?
作者:
weiwei10153
时间:
2014-12-31 18:24
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo1 {
/**
* @param args
*/
public static void main(String[] args) {
double num = 123.4567890123456;
num = getNum(num, 2);
System.out.println(num);
}
public static double getNum(double num, int i) {
String numString = num + "";
// 将正则表达式封装为Pattern对象
String regex = "\\d+\\.\\d{" + i + "}";
Pattern p = Pattern.compile(regex);
// 获取匹配器
Matcher m = p.matcher(numString);
if (m.find()) {
// 如果找到,获取这个数字
String str = m.group();
return Double.parseDouble(str);
}
throw new RuntimeException("获取的位数超过了小数的位数");
}
}
复制代码
刚写的,不知道符不符合你的要求.......
作者:
碎流
时间:
2014-12-31 19:09
public class Demo04 {
public static void main(String[] args) {
double dd = 332.44878632;
String ss = String.valueOf(dd);
String[] s = ss.split("\\.");
for(String sss : s)
{
if(sss.equals (s[s.length -1]))
System.out.println(Integer.parseInt(s[s.length-1]));
}
}
}
作者:
bjuth
时间:
2014-12-31 21:13
subString()+indexOf()可解
不过要求用正则 是因为正则简单吗?
作者:
Eagle
时间:
2015-1-1 09:12
"[0]\\.{x}"
上面是正则,x是你想保留的位数。假设前面的是0.
应该是这样。。。
作者:
godmmm
时间:
2015-1-1 10:33
用替换:
/*给一个小数取出小数点后几位(正则)*/
public class DoublePointTest {
public static void main(String[] args) {
double num=3.2482377495;//已知小数
System.out.println(getNewNum(num,5));//调用方法
}
public static String getNewNum(double num,int count)
{
String str=num+"0000000000";//在小数后面补0
String newStr=str.replaceAll("(\\..{"+count+"}).+", "$1");//保留到要求的位数
return newStr;//返回
}
}
复制代码
作者:
清浅。。
时间:
2015-1-1 10:37
顶一下一楼…
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2