超大整数相加,超过了long的范围,你要怎么做
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
/**
* 超大整数相加:
* 题目要求:如果系统要使用超大整数(超过long的范围),请你设计一个数据结构来存储这种
* 超大型数字以及设计一种算法来实现超大整数的加法运算
* @author Administrator
*
*/
public class VeryBigNumAdd {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
String a="1223232";
for(int i=a.length()-1;i>=0;i--)
{
System.out.print(a.charAt(i));
}
*/
VeryBigNumAdd vbn=new VeryBigNumAdd();
String a="123453243455535634535252345234677576252241234123523453664563634";
String b="123453243455535634535252345234677576252241234123523453664563634";
String result=vbn.doAdd(a,b);
System.out.println("result:"+result);
}
/**
*
* @param a 加数字符串1
* @param b 加数字符串2
* @return 结果字符串
* 分析:
* 1、取得两个字符串的长度
* 2、把两个的长度做比较,并得出较长的长度,及较短的长度
* 3、把长度较短的加数字符串,在左面补0,使之与较长的字符串一样长
* 4、从最高位,一个个数的取出来相加,当然首先得转换为整型
* 5、设置进位,如果两个数相加及加上进位大于等于10,并且这不是最左边一个字符相加,相加结果等于
* (取出1+取出2+进位)-10,并把进位设为1;如果没有大于10,就把进位设为0,如些循环,把
* 相加的结果以字符串的形式结合起来,就得到最后的结果
*/
String doAdd(String a,String b)
{
String str="";
int lenA=a.length();
int lenB=b.length();
int maxLen=(lenA>lenB) ? lenA : lenB;
int minLen=(lenA<lenB) ? lenA : lenB;
String strTmp="";
for(int i=maxLen-minLen;i>0;i--)
{
strTmp+="0";
}
//把长度调整到相同
if(maxLen==lenA)
{
b=strTmp+b;
}else
a=strTmp+a;
int JW=0;//进位
for(int i=maxLen-1;i>=0;i--)
{
int tempA=Integer.parseInt(String.valueOf(a.charAt(i)));
int tempB=Integer.parseInt(String.valueOf(b.charAt(i)));
int temp;
if(tempA+tempB+JW>=10 && i!=0)
{
temp=tempA+tempB+JW-10;
JW=1;
}
else
{
temp=tempA+tempB+JW;
JW=0;
}
str=String.valueOf(temp)+str;
}
return str;
}
}
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
超大整数相加,超过了long的范围,你要怎么做相关推荐
- java实现两个最大整数相加_JAVA-实现两个超大整数相加
思路: 第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置.之所以倒序存储,更加符合我们从左到右访问数组的习惯. 我们以 426709752318 + 9548125 ...
- Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算,没有数位限制...
(注:前面写了一个超大整数相加的类,参见: 超大整数相加,超过了long的范围,你要怎么做!,后来有朋友评论说BigDecimal可以完全实现我的这这个功能,刚开始的时候,我还不服气,据我所知那里有这 ...
- Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算 没有数位限制
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! (注:前 ...
- c语言乘法超过长整数,C语言中超大整数乘法运算
<C语言中超大整数乘法运算>由会员分享,可在线阅读,更多相关<C语言中超大整数乘法运算(8页珍藏版)>请在人人文库网上搜索. 1.C 语言中超大整数乘法运算在计算机中,长整型 ...
- 用C语言计算超大乘法,C语言中超大整数乘法运算.docx
C语言中超大整数乘法运算.docx .C 语言中超大整数乘法运算在计算机中,长整型 long int 变量的范围是 -2147483648 至 2147483647 ,因此若用长整型变量做乘法运算,乘 ...
- 19位整数 java_为什么阿里巴巴Java开发手册中强制要求超大整数禁止使用Long类型返回?...
在阅读<阿里巴巴Java开发手册>时,发现有一条关于前后端超大整数返回的规约,具体内容如下: 这个问题在之前和前端联调的时候发生过,发现根据脚本 id 去审批的时候,状态没有变化,后来和前 ...
- 大数计算器概念c语言,用C语言求两个超大整数的和
用C语言求两个超大整数的和 在生活中,我们经常需要计算非常大的数,但是任何一种计算器都有计算范围,一旦超过计算范围就会有精度的损失.或许有同学认为我们可以通过程序来解决,比如对于C语言来说,我们定义一 ...
- 【Java】算法积累1——大整数相加
算法刚刚入门,每次记录下自己所学的知识总结以及理解,希望能够帮助大家,如有内容有错误或可改进的地方,欢迎一起探讨,一起进步,在此也要感谢WYSCODER学长给我的学习建议 目录 方法一: 思路: 代码 ...
- java 阶乘 最大整数_Java版超大整数阶乘算法-10,0000级
当计算超过20以上的阶乘时,阶乘的结果值往往会很大.一个很小的数字的阶乘结果就可能超过目前个人计算机的整数范围.如果需求很大的阶乘,比如1000以上完全无法用简单的递归方式去解决.在网上我看到很多用C ...
最新文章
- python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例
- 20162329 2017-2018-1 《程序设计与数据结构》第十一周学习总结
- Linux基础命令小结
- 手把手带你入门Java中File类
- 一个基于ngrx的计数器例子
- jzoj3801-[NOIP2014模拟8.23]骰子【数学期望】
- 一些常用的meta标签及其作用
- 怎么调试内存溢出的c++代码_使用jvisualvm排查一次内存溢出(OOM)过程
- Ubuntu18.04-安装opencv3.2.0_contrib
- 鸢尾花数据集分类--神经网络
- 数据结构 图-关键路径:AOE网络
- 如何打开.yml文件
- matlab 求不规则体积,matlab,求不规则三维图形体积?
- 海贼王里面路飞的一些台词翻译
- 下一代微型计算机,「简讯」GTX 1650完整规格曝光;任天堂推迟下一代Switch上市时间…...
- marquee---jsp中的滚动字幕标记
- 运维常用工具命令/知识总结
- 本博客早已废除。请移步新地址
- 游泳馆会员管理系统功能图
- 计算机的用户账户,电脑用户名_电脑用户名是什么
热门文章
- 深度解读MRS IoTDB时序数据库的整体架构设计与实现
- 论文解读丨空洞卷积框架搜索
- 基于LiteOS Studio零成本学习LiteOS物联网操作系统
- 大厂运维必备技能:PB级数据仓库性能调优
- 干货分享丨轻松玩转 Huawei LiteOS 传感框架
- 西瓜哥:公有云也“All-Flash”?
- 弹性文件服务解密 -- 块存储、文件存储、对象存储的区别
- Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数
- 红橙Darren视频笔记 面试题 为什么view获取宽高为0 onCreate onResume view.post源码浅析(继承activity api27)
- 计算机图形学E7——OpenGL 交互式三角形裁剪直线