public static void main(String[] args) { mult("1234", "5678"); } private static void mult(String v1, String v2) { int[] num2=str2IntArray(v1); int[] num1=str2IntArray(v2); int[] result=new int[num1.length+num2.length]; for (int j = num2.length-1; j>=0; j--) { if(num2[j]==0){ break; } int idx=num2.length-1-j; for (int i = num1.length-1; i >=0; i--) { int idy=num1.length-1-i; result[result.length-1-idy-idx]+=num1[i]*num2[j]; } } for (int i = result.length-1; i>0 ; i--) { result[i-1]+=result[i]/10; result[i]=result[i]%10; if(result[i-1]<10){ break; } } StringBuilder sb=new StringBuilder(); for (int i = 0; i < result.length; i++) { sb.append(result[i]); } int index=-1; for (int i = 0; i < result.length; i++) { if(result[i]!=0){ break; } index=i; } String s = sb.toString(); if(index!=-1){ s=s.substring(index+1); } System.out.println(s+"|length="+s.length()); } private static int[] str2IntArray(String value) { char[] chars = value.toCharArray(); int[] temp=new int[chars.length]; for (int i = 0; i <chars.length ; i++) { if(Character.isDigit(chars[i])){ temp[i]=Integer.valueOf(chars[i]+""); }else { throw new NumberFormatException(value+"包含非数字的字符"); } } return temp; }
大数据的乘法计算
最新推荐文章于 2021-07-26 01:56:05 发布