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++实现:
#includeusingnamespacestd; 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_len 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); if(decimal_len get_dot(res);--i){ if(res[i]=='0'){ res[i]='\0'; break; } break; } } num1[l1]='\0',num2[l2]='\0'; } 总结:
- 用整型数组来储存各个位数的数字
- 学会进位制,悟透进位原理
- 熟练掌握字符串数组与整型数组的相互转换
- 学会用指针来辅助输出
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。