C++实现浮点数精确加法
本文实例为大家分享了C++实现浮点数精确加法的具体代码,供大家参考,具体内容如下
实现两个正浮点数的精确加法
参与运算的浮点数及计算结果所需存储空间都不会超过main函数中的定义
main函数框架要求如下:
intmain(){
charnum1[128],num2[128],res[128];
cout<<"Enterthefirstnumber:";
cin>>num1;
cout<<"Enterthesecondnumber:";
cin>>num2;
add(num1,num2,res);
cout<
C++实现:
#include
usingnamespacestd;
voidadd(charnum1[],charnum2[],charres[]);
intget_len(charnum[]);
intget_integer(charnum[]);
intget_dot(charnum[]);
intget_decimal_len(charnum[]);
intget_integer_len(intx);
intchar_to_int(charnum[],intbegin,intlen);
voidint_to_char(charres[],intx);
voidget_decimal(charnum1[],charnum2[]);
chardecimal[128]={0};
intmain(){
charnum1[128]={0},num2[128]={0},res[128]={0};
cout<<"Enterthefirstnumber:";
cin>>num1;
cout<<"Enterthesecondnumber:";
cin>>num2;
add(num1,num2,res);
cout<=0;--i){
res[i]=x%10+'0';
x/=10;
}
res[l+1]='\0';
}
//得到整数部分
intget_integer(charnum[]){
intinteger=0,x=get_dot(num);
for(inti=0;i<=x-1;++i){
integer=integer*10+num[i]-'0';
}
returninteger;
}
//得到小数部分长度
intget_decimal_len(charnum[]){
intx=get_dot(num),len=0;
for(inti=x+1;num[i]!='\0';++i)len++;
returnlen;
}
//得到整数的长度
intget_integer_len(intx){
intinteger_len=0;
if(x==0)return1;
while(x>0){
x/=10;
integer_len++;
}
returninteger_len;
}
//得到字符串长度
intget_len(charnum[]){
intsum=0;
for(inti=0;num[i]!='\0';++i)sum++;
returnsum;
}
//得到小数变成整数后的和
voidget_decimal(charnum1[],charnum2[]){
intdecimal_len=get_decimal_len(num1)>get_decimal_len(num2)?get_decimal_len(num1):get_decimal_len(num2);
intdecimal_sum=char_to_int(num1,get_dot(num1),decimal_len)+char_to_int(num2,get_dot(num2),decimal_len);
int_to_char(decimal,decimal_sum);
if(decimal_lenget_decimal_len(num2)?get_decimal_len(num1):get_decimal_len(num2);
intdecimal_sum=char_to_int(num1,get_dot(num1),decimal_len)+char_to_int(num2,get_dot(num2),decimal_len);
if(decimal_lenget_dot(res);--i){
if(res[i]=='0'){
res[i]='\0';
break;
}
break;
}
}
num1[l1]='\0',num2[l2]='\0';
}
总结:
- 用整型数组来储存各个位数的数字
- 学会进位制,悟透进位原理
- 熟练掌握字符串数组与整型数组的相互转换
- 学会用指针来辅助输出
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。