浮点数加法【北京大学】

2024-03-04 16:32

本文主要是介绍浮点数加法【北京大学】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接

54.87
674.92

首先用字符串读入,把整数部分z和小数部分x分开存放在数组中,并记录长度zl和xl
首先将小数部分相加,从后往前加;然后保留进位carry。
整数部分先逆序变成

45
476

然后从前往后加,注意加到最大长度后,需要判断进位carry是否为0,不为0时,还需要进位。
最后输出,整数部分逆序输出,小数部分正序输出。

#include<bits/stdc++.h>
using namespace std;
struct F{int z[1005],x[1005];int zl,xl;F(){memset(z,0,sizeof(z));memset(x,0,sizeof(x));zl=0,xl=0;}
};
int main(){string str1,str2;F a,b,c;while(cin>>str1>>str2){int flag=0;//str1 for(int i=0;i<str1.size();i++){  //将字符串浮点数转换为整数部分和小数部分 if(str1[i] == '.'){flag=1;continue;}if(flag==0){a.z[a.zl++] = str1[i] - '0';}else{a.x[a.xl++] = str1[i] - '0';}}//str2flag=0;for(int i=0;i<str2.size();i++){  //将字符串浮点数转换为整数部分和小数部分 if(str2[i] == '.'){flag=1;continue;}if(flag==0){b.z[b.zl++] = str2[i] - '0';}else{b.x[b.xl++] = str2[i] - '0';}}//先求小数部分的和 int carry=0; //进位c.xl = max(a.xl, b.xl);for(int i=0;i<a.xl ||i<b.xl;i++){c.x[c.xl-1-i] = (a.x[c.xl-1-i] + b.x[c.xl-1-i] + carry) % 10;carry =  (a.x[c.xl-1-i] + b.x[c.xl-1-i] + carry) / 10;}c.zl = max(a.zl, b.zl);reverse(a.z, a.z + a.zl);reverse(b.z, b.z + b.zl);for(int i=0;i<a.zl ||i<b.zl;i++){c.z[i] = (a.z[i] + b.z[i] + carry) % 10;carry =  (a.z[i] + b.z[i] + carry) / 10;}if(carry!=0) c.z[c.zl++] = 1;for(int i=c.zl-1;i>=0;i--){cout<<c.z[i];}cout<<".";for(int i=0;i<c.xl;i++){cout<<c.x[i];}	cout<<endl;}return 0;
}

这篇关于浮点数加法【北京大学】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773771

相关文章

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

单精度浮点数按存储格式转为整数的程序

///#include<cstdio>//-----------------union int_char{unsigned char ch[4];float i;};void out_put(union int_char x)//x86是小端对其模式,即最数据的最低位存储在地址的最低位上。{printf("单精度浮点数值为:%f\n",x.i,x.i);printf("存储位置从左到右

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和

高精度加法,乘法,阶乘

#include <iostream>#include <map>#include <string>#include <algorithm>using namespace std;const int Max = 50000;string str1,str2;/***********乘法***********/void chenfa(){cin >> str1>>str2;int a

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加法运算的两张图shape必须是相同的. # 图片加法imp

IEEE的浮点数表示

IEEE浮点标准用V=(-1)^s*M*2^E 由符号,尾数,阶码表示 32位单精度 单精度 二进制小数,使用32位存储。 1 8 23 位长 +-+--------+-----------------------+ |s| exp | fraction | +-+--------+-----------------------+ 31 30 23 22 0 位

C语言浮点数运算,讲述原理并总结一些案例

有些C语言书上说float型的有效位数是6~7位,为什么不是6位或者7位?而是一个变化的6~7位?         浮点数在内存中是如何存放的?         float浮点数要比同为4字节的int定点数表示的范围大的多,那么是否可以使用浮点数替代定点数?         为什么float型浮点数9.87654321 > 9.87654322不成立?为何10.2 - 9的结果不

【PyTorch常用库函数】torch.add():张量的加法操作

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一 、torch.add()函数的基本用法二、示例演示示例1:两个相同形状的一维张量相加示例2:两个不同形状的一维张量相加(错误示例)示例3:使用alpha参数进行加权加法 结尾 前言 PyTorch作为一

浮点数精度不再是困扰:Python高手的精准编程秘籍!解决Python浮点数精度问题!

本专栏主要是自己在实际使用Python和工作中遇到的一些问题以及解决方法,还有一些是在网上搜集到的一些频繁出现和比较复杂的疑难杂症,目的就是希望帮助到使用Python的小伙伴们,无论是刚入门的新手,还是已经精通的Python高手,希望大家一起加油 🧑‍💻博客主页:长风清留扬-CSDN博客📚系列专栏:Python疑难杂症百科-BUG编年史🤝每天更新大数据相关方面的技术,分享

图像的加法 | 05

大于255的直接取255。 code: import cv2 as cvimport matplotlib.pyplot as plt​rain = cv.imread("../Dataset/TrainValDataset/Image/camourflage_00007.jpg")plt.imshow(rain[:,:,::-1])plt.show()​view =