java 大数字计算

java 大数字计算_第1张图片

 

 |--代码示例

 1 /**
 2  * @auther::9527
 3  * @Description: 算法学习
 4  * @program: oop
 5  * @create: 2019-09-12 23:48
 6  */
 7 public class Test {
 8     public static void main(String[] args) {
 9         //乘数
10         int multiplier = 358623965;
11         //被乘数
12         int multiplicand = 200203679;
13         //用一个变量接收转化后的数字
14         String[] temp = Test.change(multiplier);
15         for (int i = 0; i < temp.length; i++) {
16             //将各个数位上的字符串数字转化为整型数字并乘以乘数
17             int centre = Integer.parseInt(temp[i]) * multiplicand;
18             //重新储存数组
19             temp[i] = Integer.toString(centre);
20         }
21         for (int i = temp.length - 1; i >= 0; i--) {
22             int centre = Integer.parseInt(temp[i]);
23             int nextCentre = 0;
24             if (i - 1 > 0) {
25                 nextCentre = Integer.parseInt(temp[i - 1]);
26                 temp[i] = Integer.toString(centre % 10);
27                 temp[i - 1] = Integer.toString(nextCentre + centre / 10);
28                 //设定一下,防止数组越界异常
29             } else if (i - 1 == 0 && Integer.parseInt(temp[i]) / 10 > 10) {
30                 System.out.println("数位不足,需重新设定数组长度");
31                 break;
32             }
33         }
34 
35         //输出结果
36         for (String s : temp) {
37             System.out.print(s);
38         }
39 
40         System.out.println("\n\n以下是用长整型long计算的结果,用于检验上面的算法的结果");
41         long a = 358623965;
42         long b = 200203679;
43         System.out.println("标准答案;" + a * b);
44     }
45 
46 
47     /**
48      *
49      * @param num  输入一个整型的数
50      * @return  返回将大数字放入数组的那个数组
51      */
52     public static String[] change(int num) {
53         //声明一个长度20的数组
54         String[] temp = new String[25];
55         //声明一个整型n,用做temp的计数器
56         int n = 1;
57         // 将传入大数字分割成单个的数字
58         String[] transfer = Integer.toString(num).split("");
59         //倒序遍历num转化成的String数组,将这个数组放入申明的数组中
60         for (int i = transfer.length - 1; i >= 0; i--) {
61             //倒序放入,此时,n就是用来在数位上递减的变量
62             temp[temp.length - n] = transfer[i];
63             n += 1;
64         }
65         //将tmep数组中的null替换为字符串“0”
66         for (int i = 0; i < temp.length; i++) {
67             if (temp[i] == null) {
68                 temp[i] = "0";
69             }
70         }
71         return temp;
72     }
73 }
大数字计算---懒,后面的步骤没写成方法

 

转载于:https://www.cnblogs.com/twuxian/p/11516597.html

你可能感兴趣的:(java 大数字计算)