java 大数字计算

Posted twuxian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 大数字计算相关的知识,希望对你有一定的参考价值。

技术图片

 

 |--代码示例

技术图片
 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 
大数字计算---懒,后面的步骤没写成方法

 

以上是关于java 大数字计算的主要内容,如果未能解决你的问题,请参考以下文章

处理大数字与浮点数

java学习第13天( java获取当前时间,有关大数据的运算及精确数字运算,Date类)

java中的大数值

大数字的计算

如何计算大数字的位数? C++

数字经济再入政府工作报告,大数据云计算迎来广泛应用