本文提供给刚入坑的新手

关于高精度的计算网上百度一下可以了解到许多

今天我分享的只是一些自己的心得,更详细的可以去看原博主的原创文章(https://blog.csdn.net/fanyun_01/article/details/79967170),在阅读完之后可以来我这文章食用。

注意事项:

1.因为超出了普通储存数据的范围,所以通过以字符的形式输入到数组当中。

2.储存是将字符串从后往前储存到数组当中的。

下面是源码,我是在老樊Lu码的原创源码上加以修改的:

  1. #include<iostream>

  2. #include<cstring>

  3. using namespace std;

  4. int main()

  5. {

  6. string str1,str2;

  7. int a[250],b[250],len; //数组的大小决定了计算的高精度最大位数
  8. int i;

  9. memset(a,0,sizeof(a));

  10. memset(b,0,sizeof(b));

  11. cin>>str1>>str2; //输入两个字符串

  12. a[0]=str1.length(); //取得第一个字符串的长度

  13. for(i=1;i<=a[0];i++) //把第一个字符串转换为整数,存放在数组a中
  14. a[i]=str1[a[0]-i]-'0'; //将第一个字符串中数据倒着输入到数组当中并用-'0'使其指向字符串中第一个字符 

  15. b[0]=str2.length(); //取得第二个字符串长度 

  16. for(i=1;i<=b[0];i++) //把第二个字符串中的每一位转换为整数,存放在数组B中 

  17. b[i]=str2[b[0]-i]-'0'; 

  18. len=(a[0]>b[0]?a[0]:b[0]); //取两个字符串最大的长度 

  19. for(i=1;i<=len;i++) //做按位加法,同时处理进位 

  20. a[i]+=b[i]; 

  21. cout<<"这是第 "<<i<<" 的值,此时a[i]= " <<a[i]; //在循环里面我决定使其更可视化,更能理解,于是加入了输出语句 

  22. a[i+1]+=a[i]/10; 

  23. cout<<"这是第 "<<i+1<<" 的值,此时a[i]= " <<a[i+1]; 

  24. a[i]%=10; 

  25. cout<<"这是第 "<<i<<" 的值,此时a[i]= " <<a[i]<<"\n"; 

  26. len++; //下面是去掉最高位的0,然后输出。 

  27. while((a[len]==0)&&(len>1)) len--; 

  28. for(i=len;i>=1;i--) 

  29. cout<<a[i]; 

  30. return 0; 

  31. }

以上就是源码了虽然更改不大,但是我觉得加入输出是对新手来说很有必有的。

c++高精度计算(加法)的更多相关文章

  1. 【OpenJ_Bailian - 4152 】最佳加法表达式(动态规划)

    最佳加法表达式 Descriptions: 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放1个加号,最好的摆 ...

  2. 百练4152:最佳加法表达式(dp+高精度)

    描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36 输入有不超 ...

  3. SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较

    /*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...

  4. OpenJudge 4152 最佳加法表达式

    总时间限制: 1000ms 内存限制: 65536kB 描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放 ...

  5. 【动态规划】最佳加法表达式(百练oj4152)

    总时间限制: 1000ms 内存限制: 65536kB 描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放 ...

  6. 用CIL写程序:写个函数做加法

    前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点 ...

  7. [CodeWars][JS]实现大整数加法

    问题描述 实现‘字符串加法’,即将两个以字符串形式表示的数字相加,得到结果然后返回一个新的字符串. 例如:输入‘123’,‘321’,返回‘444’. 这样在进行两个任意大的整数相加的时候,既不会溢出 ...

  8. 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]

    [本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...

  9. jQuery的加法运算.

    jQuery的加法运算. 加法运算 ?想必大家听到这都会不屑了,加法运算这是多么简单的运算.然而有的时候在jQuery也让人挺头疼的. 常规的是: var num1 = 123; var num2=1 ...

随机推荐

  1. C++学习笔记(4)----模板实参推断

    1. 如图所示代码,模板函数 compare(const T&, const T&) 要求两个参数类型要一样. compare("bye","dad&qu ...

  2. 地图的平移、缩放的实现(android版)

    一.平移地图 移动地图的原理是利用手指在屏幕上拖动的距离,转换为在地图上距离,把地图坐标加上偏移的距离实现地图移动. 由于地图是绘制到Bitmap上的,所以地图移动和缩放的过程只要改变Bitmap的矩 ...

  3. 图像去噪算法:NL-Means和BM3D

    图像去噪是非常基础也是非常必要的研究,去噪常常在更高级的图像处理之前进行,是图像处理的基础.可惜的是,目前去噪算法并没有很好的解决方案,实际应用中,更多的是在效果和运算复杂度之间求得一个平衡,再一次验 ...

  4. vue知识day1

    HTML语义.CSS:样式 js:行为 jQuery:简化了js操作 boostrap :框架 ,以类方式展现 react:facebook 公司的产品 angular:谷歌公司产品 vue:作者尤雨 ...

  5. 13.用别名(alias)创建你自己的命令

    现在是时候,感受第一次编程经历了!我们将用 alias 命令创建我们自己的命令.但在 开始之前,我们需要展示一个命令行小技巧.可以把多个命令放在同一行上,命令之间 用”;”分开.它像这样工作: com ...

  6. is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:严格输入了匹配通配符,但还是找不到元素“jee:jndi-lookup”的声明。

    由于未添加xsd声明引起

  7. EXCHANGE 2013 TLS传输层安全

    默认情况下,SMTP流量是不被加密的,这就导致在公网上进行邮件沟通就像是在广播一样,任何人拦截到该邮件都可以轻而易举的读取其内容.但是现实场景中有许多敏感信息是通过邮件来进行发送的,所以其中一种保护邮 ...

  8. Qt Mysql驱动编译过程

    1.首先当然是要有VS2008+Qt4.7的开发环境. 2.安装MySQL,最好是4以后的版本,安装MySQL时要勾住“C Include Files 和 Lib Files”选项,这样才能装上MyS ...

  9. 沉淀再出发:关于java中的AQS理解

    沉淀再出发:关于java中的AQS理解 一.前言 在java中有很多锁结构都继承自AQS(AbstractQueuedSynchronizer)这个抽象类如果我们仔细了解可以发现AQS的作用是非常大的 ...

  10. perceptron感知机 mtalab

    data=load('data.txt'); x=[data(:,1),data(:,2)]; y=data(:,3); k=length(y); %绘制散点图 for j=1:k if y(j)== ...