描述

用string字符串存放两个数字(long long放不下),返回string字符串形式的相加结果
关键:拆分为整数部分和小数部分;先进行小数部分相加;小数部分先填充0,再反转,再相加;整数部分先反转,再填充0,再相加;注意进位

代码

#include <iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;int main() {string s1, s2;while (cin >> s1 >> s2) {string s3;int index1 = s1.find('.');int index2 = s2.find('.');string s1xiaoshu = "";string s2xiaoshu = "";string s1zhengshu = "";string s2zhengshu = "";string res2;   //小数相加结果string res1;    //整数相加结果int jinwei = 0;/**********************小数部分相加,先填充0,再反转************************/if (index1 != -1 || index2 != -1) {if (index1 != -1) {for (int i = index1 + 1; i < s1.size(); i++) {s1xiaoshu += s1[i];}}if (index2 != -1) {for (int i = index2 + 1; i < s2.size(); i++) {s2xiaoshu += s2[i];}}s1xiaoshu.size() > s2xiaoshu.size() ? s2xiaoshu.resize(s1xiaoshu.size(), '0') : s1xiaoshu.resize(s2xiaoshu.size(), '0'); //先填充0reverse(s1xiaoshu.begin(), s1xiaoshu.end());    //再反转reverse(s2xiaoshu.begin(), s2xiaoshu.end());for (int i = 0; i < s1xiaoshu.size(); i++) {res2 += to_string((s1xiaoshu[i] + s2xiaoshu[i] - 2 * '0' + jinwei) % 10);jinwei = (s1xiaoshu[i] + s2xiaoshu[i] - 2 * '0' + jinwei) / 10;}reverse(res2.begin(), res2.end());       //最后反转回来}/**********************整数部分相加,先反转,再填充0************************/if (index1 != -1) {for (int i = 0; i < index1; i++) {s1zhengshu += s1[i];}}elses1zhengshu = s1;if (index2 != -1) {for (int i = 0; i < index2; i++) {s2zhengshu += s2[i];}}elses2zhengshu = s2;int max_length = max(s1zhengshu.size(), s2zhengshu.size());reverse(s1zhengshu.begin(), s1zhengshu.end());      //先反转reverse(s2zhengshu.begin(), s2zhengshu.end());     //再填充0s1zhengshu.size() > s2zhengshu.size() ? s2zhengshu.resize(max_length, '0') : s1zhengshu.resize(max_length, '0');for (int i = 0; i < max_length; i++) {res1 += to_string((s1zhengshu[i] + s2zhengshu[i] - 2 * '0' + jinwei) % 10);jinwei = (s1zhengshu[i] + s2zhengshu[i] - 2 * '0' + jinwei) / 10;}if (jinwei) {string syu = to_string(jinwei);res1 += syu;}reverse(res1.begin(), res1.end()); //最后反转回来/**********************整数相加结果与小数相加结果,拼接************************/if (index1 != -1 || index2 != -1) {s3 = res1 + '.' + res2;}elses3 = res1;for (int i = 0; i < s3.size(); i++) {cout << s3[i];}}return 0;
}

示例:

带小数的大数相加,C++实现相关推荐

  1. 带小数的大数相加,大数相减C++实现

    今天我们带来string类的含小数的大数相加.相减的实现过程,具体代码如下 #include<iostream> #include<string> #include<cc ...

  2. 怎么用计算机的计算器转换进位制,怎么用电脑计算器将带小数的二进位制转换为十进位制...

    怎么用电脑计算器将带小数的二进位制转换为十进位制以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 怎么用电脑计算器将带小数 ...

  3. javascript乘法和加法_JavaScript大数相加相乘的实现方法实例

    前言 JavaScript 中的最大安全整数是 2 ^{53} – 1 ,即 9007199254740991,当我们进行超出这个范围的数值计算的时候就无法得到精确的值,而是一个近似值,比如我们计算 ...

  4. hdu A + B Problem II(大数相加,数组实现)

    hdu A + B Problem II(大数相加,数组实现) 题目走起 注意最后一个case 不需要换行 下面代码 #include<stdio.h> #include<strin ...

  5. 大数相乘、大数相加、大数相减Java版本

    为什么80%的码农都做不了架构师?>>>    题目:两个非常大的数字相乘(相加,相减) 该题目在java中可以使用BigInteger类中的方法来实现.否则的话可以使用如下方式来实 ...

  6. 两个函数式解决大数相加的方法

    解决大数相加的方法有很多,网上很容易搜到,下面介绍两种,一种是在网上抄的,一种是自己想的,我将他们都用函数式的方式重写了一遍. 这种是在网上抄的,的确非常简洁 function add(a,b) {l ...

  7. python 把带小数的浮点型字符串转换为整数的解决方案

    python 把带小数的浮点型字符串转换为整数的解决方案 参考文章: (1)python 把带小数的浮点型字符串转换为整数的解决方案 (2)https://www.cnblogs.com/mlgjb/ ...

  8. golang中小数除以大数为0的坑

    某次开发发现一个小数除以大数为0,看代码. package mainimport "fmt"func main() {time := fmt.Sprintf("%.3f& ...

  9. Java除法结果带小数、进一法的实现 Java问题通用解决代码

    http://blog.csdn.net/windone0109/article/details/5355379进一法: 即省略的位上只要大于零都要进一位 :  四舍五入法: 即省略的位上小于五都要舍 ...

最新文章

  1. MinIO分布式专题(第一章、一文教你搭建MinIO单机版)
  2. (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果
  3. cmd应用基础 扫盲教程
  4. android画一个圆形图片组件
  5. 用于MyBatis CRUD操作的Spring MVC 3控制器
  6. 哪些人不能要 哪些人不能留
  7. 奉献一个窗口置顶的小工具
  8. DEBERTA(Decoding-enhanced BERT with disentangled attention) 论文笔记
  9. Fedora core 2下建立Poptop服务器以及常见问题
  10. 解决Android的adb命令行报错Permission denied
  11. 青鸟BCNT-网络信息安全工程师
  12. Istio 南北向流量管理
  13. 【Linux命令】mergecap命令的用法
  14. 裁员的第一波枪声,从游戏行业响起了?
  15. python基础篇{数据类型}
  16. 二、8【FPGA】Verilog中锁存器(Latch)原理、危害及避免
  17. 在拼多多上抢了点茅台
  18. 直播绿幕抠图的例子(绿幕抠图直播实例参考)
  19. iPhone/iPad的IAP防破解之第三方服务器二次验证
  20. 怎么解决视频时摄像头显示的画面显示绿色人影的问题

热门文章

  1. 纺织行业ERP系统选择哪个?
  2. 交错(拉丝)(Interlace) 与 反胶卷过带
  3. 怎么把视频做成背景html,基于HTML5 video标签的背景视频效果
  4. c语言定义92bit位变量,IAR中 C语言位定义
  5. 复合函数求导经典例题_复合函数求导练习试题.doc
  6. bios开发相关网站
  7. 将Kubernetes生态系统与5G相结合
  8. rssi室内定位算法原理_基于RSSI的精确室内定位算法
  9. c语言中文内码,C语言辅导:三种常见的中文内码的转换方法
  10. android扫条形码功能,详解Android 扫描条形码(Zxing插件)