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 }

大数字计算---懒,后面的步骤没写成方法

原文地址:https://www.cnblogs.com/twuxian/p/11516597.html

时间: 2024-07-30 13:12:03

java 大数字计算的相关文章

java大数字操作:BigInteger,BigDecimal(浮点型)

java大数字操作: BigInteger:大数字整型的 BigDecimal(浮点型):大数字小数的,也适用大的整数 BigInteger: String num1 = "100381828646148164"; String num2 = "10998979766868"; BigInteger big1 = new BigInteger(num1); BigInteger big2 =new BigInteger(num2); System.out.print

大数字的计算

package object; import java.math.BigDecimal; import java.math.BigInteger; /** * @author dayu * @Describe 大数字的计算 */ public class BigIntegerDemo { public static void main(String[] args) { BigInteger bigInteger1 = new BigInteger("45645645645645645645645

java的数字精确计算问题-BigDecimal

java的数字运算,偶尔喝出现精度的问题,以下阐述的 java的BigDecimal类的使用. 例如: System.out.println(0.9+0.3); 结果1.2 System.out.println(1.9+0.3); 结果2.1999999999999997 System.out.println(1.9+0.4); 结果2.3 java为了让float或者double类型能够精确的计算,提供了BigDecimal类. 示例如下: public static BigDecimal g

[Java]#从头学Java# Java大整数相加

重操旧业,再温Java,写了个大整数相乘先回顾回顾基本知识.算法.效率什么的都没怎么考虑,就纯粹实现功能而已. 先上代码: 1 package com.tacyeh.common; 2 3 public class MyMath { 4 5 public static String BigNumSum(String... n) { 6 int length = n.length; 7 StringBuilder result = new StringBuilder(); 8 //这里判断其实不需

大数字操作、BigInteger的使用 BigDecimal(很大的小数)

1 public class Test4 { 2 public static void main(String[] args) { 3 BigInteger num1=new BigInteger("123456789123456789123456789"); 4 BigInteger num2=new BigInteger("2345678901234567890"); 5 System.out.println("加:"+(num1.add(n

大数字运算

本博客主要讲解 1.BigInteger 2.BigDecimal 在BigInteger类中封装了多种操作,除了基本的加.减.乘.除操作之外,还提供了绝对值.相反数.最大公约数以及判断是否为质数等操作. 当使用BigInteger类时,可以实例化一个BigInteger对象,并自动调用相应的构造函数.BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字. BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小

42步进阶学习—让你成为优秀的Java大数据科学家!

作者 灯塔大数据 本文转自公众号灯塔大数据(DTbigdata),转载需授权 如果你对各种数据类的科学课题感兴趣,你就来对地方了.本文将给大家介绍让你成为优秀数据科学家的42个步骤.深入掌握数据准备,机器学习,SQL数据科学等. 本文将这42步骤分为六个部分, 前三个部分主要讲述从数据准备到初步完成机器学习的学习过程,其中包括对理论知识的掌握和Python库的实现. 第四部分主要是从如何理解的角度讲解深入学习的方法.最后两部分则是关于SQL数据科学和NoSQL数据库. 接下来让我们走进这42步进

JS数字计算精度误差的解决方法

本篇文章主要是对javascript避免数字计算精度误差的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 如果我问你 0.1 + 0.2 等于几?你可能会送我一个白眼,0.1 + 0.2 = 0.3 啊,那还用问吗?连幼儿园的小朋友都会回答这么小儿科的问题了.但是你知道吗,同样的问题放在编程语言中,或许就不是想象中那么简单的事儿了. 不信?我们可以做个试验. 先来看一段 JS. var num1 = 0.1; var num2 = 0.2; alert(num1+num2 ===

JsonCpp读取较大数字出错问题

JsonCpp是c++中解析Json常用的解析库.在项目开发中,服务端如果用的是java的话都会是以JSON格式进行传输,客户端使用c++的话都会用到JsonCpp.看看下面这个问题:  json字串:{"@type":"Login","messageType":"Login","sendTime":1403575350411,"receivedTime":0,"loginId