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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

lazy_xia

中级黑马

  • 黑马币:24

  • 帖子:62

  • 精华:0

© lazy_xia 中级黑马   /  2014-3-29 04:13  /  1206 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java两个数相乘  位数没有限制,请写一个高精度算法
关于判断小数点的
以下是我的代码
public static String cj2(String s1, String s2) {
                char[] ch1 = s1.toCharArray();
                char[] ch2 = s2.toCharArray();

                ArrayList<Integer> list = new ArrayList<Integer>();
                ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();
                for (int i = ch1.length - 1; i >= 0; i--) {
                         
                        int a = Integer.parseInt(ch1[i] + "");
                        // System.out.println(a);

                        String sum = "";
                        int temp = 0;
                        int temp1 = 0;

                        for (int j = ch2.length - 1; j >= 0; j--) {

                                int b = Integer.parseInt(ch2[j] + "");
                                System.out.println("a" + a + " *b" + b + " =" + a * b);
                                list.add(a * b);
                                if (j == 0)
                                        System.out.println("leijia" + leijia(list)); // 最后一个元素
                                                                                                                                        // 就打印下累加的
                                                                                                                                        // 结果集
                                // // sum = (int) (sum + ((a * b) * (Math.pow(10, temp))));
                                // // sum=sum+(a*b)
                                // System.out.println("a" + a + " *b" + b + " =" + a * b);
                                // System.out.println("for j=" + sum); // 这里的时候已经溢出
                                // temp++; // 用来运算位的

                        }
                        lists.add(list);
                        System.out.println("lists" + lists);

                        // System.out.println(""+cj2(sum + "", ch1[i]+""));
                        // System.out.println(sum);
                        System.out.println("list==" + list);

                        // list.add(sum);
                        //
                        // System.out.println("result=" + getString(list));

                }
                return null;

        }
求 大神帮忙 我从下午4点多研究到现在了

1 个回复

倒序浏览
这是用到的累加的方法 static String leijia(ArrayList<Integer> list) {                 String[] str = new String[list.size()];                 int temp = 0;                 for (int i = 0; i < list.size(); i++) {                         int num = list.get(i);                          if (num / 10 > 0 && i != list.size() - 1) {                                  temp = (num / 10); // 2                                 System.out.println("temp=" + temp + "   " + (32 / 10));                                  num = num % 10;                                 str[i] = num + "";                                 System.out.println(" num>0 " + str[i]);                          } else {                                 str[i] = (num + temp) + "";                                 System.out.println("num+temp=  " + num + "+" + temp);                         }                  }                  String[] newStr = new String[str.length];                 int count = newStr.length - 1;                 for (int x = 0; x < str.length; x++) {                         newStr[count] = str[x]; // 数组反转                         count--;                 }                  String res = Arrays.toString(newStr).replace(", ", "");                  return res.substring(1, res.length() - 1);         }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马