A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© run_wind 中级黑马   /  2014-12-31 17:54  /  1087 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

给一个小数取出小数点后几位(正则)

这个题不会做。求解,是不是写规则然后匹配后面有几位?

6 个回复

倒序浏览
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;

  3. public class Demo1 {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 double num = 123.4567890123456;
  9.                 num = getNum(num, 2);
  10.                 System.out.println(num);
  11.         }

  12.         public static double getNum(double num, int i) {
  13.                 String numString = num + "";

  14.                 // 将正则表达式封装为Pattern对象
  15.                 String regex = "\\d+\\.\\d{" + i + "}";
  16.                 Pattern p = Pattern.compile(regex);
  17.                 // 获取匹配器
  18.                 Matcher m = p.matcher(numString);
  19.                 if (m.find()) {
  20.                         // 如果找到,获取这个数字
  21.                         String str = m.group();
  22.                         return Double.parseDouble(str);
  23.                 }
  24.                 throw new RuntimeException("获取的位数超过了小数的位数");
  25.         }

  26. }
复制代码
刚写的,不知道符不符合你的要求.......
回复 使用道具 举报
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]));
                }

        }
}
回复 使用道具 举报
subString()+indexOf()可解
不过要求用正则 是因为正则简单吗?
回复 使用道具 举报
"[0]\\.{x}"
上面是正则,x是你想保留的位数。假设前面的是0.
应该是这样。。。
回复 使用道具 举报
用替换:
  1. /*给一个小数取出小数点后几位(正则)*/
  2. public class DoublePointTest {

  3.         public static void main(String[] args) {
  4.                 double num=3.2482377495;//已知小数
  5.                 System.out.println(getNewNum(num,5));//调用方法
  6.                
  7.         }
  8.         public static String getNewNum(double num,int count)
  9.         {
  10.                 String str=num+"0000000000";//在小数后面补0
  11.                 String newStr=str.replaceAll("(\\..{"+count+"}).+", "$1");//保留到要求的位数
  12.                 return newStr;//返回
  13.         }

  14. }
复制代码
回复 使用道具 举报
清浅。。 来自手机 中级黑马 2015-1-1 10:37:30
7#
顶一下一楼…
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马