128 带有小数的浮点数 大数乘法
来源:互联网 发布:java中英文字母排序 编辑:程序博客网 时间:2024/05/01 12:59
28、两个数相乘,小数点后位数没有限制,请写一个高精度算法
大数乘法,注意小数点的控制。
这里小数点的个数,是根据两个乘数决定的,没有去除末尾的0
/*28、两个数相乘,小数点后位数没有限制,请写一个高精度算法*/ #include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>using namespace std;char a[100],b[100];int n1[100],n2[100],ans[200];int main(){int t,i,j,len1,len2,r1,r2,k,k1,k2,tmp,index;printf("请输入2个整数,输入(-1)结束:\n"); while(1){scanf("%s",a);if(strcmp(a,"-1")==0)break;scanf("%s",b); len1=strlen(a);len2=strlen(b);memset(n1,0,sizeof(n1)); memset(n2,0,sizeof(n2));memset(ans,0,sizeof(ans));k1=0;r1=r2=0;for(i=0;i<len1;i++) {if(a[i]=='.')r1=len1-(i+1);//记录小数点位置elsen1[k1++]=a[i]-'0';}k2=0;for(i=0;i<len2;i++){if(b[i]=='.')r2=len2-(i+1);elsen2[k2++]=b[i]-'0';}k=0;for(i=k1-1;i>=0;i--){index=k++;t=0;for(j=k2-1;j>=0;j--){tmp=ans[index]+n1[i]*n2[j]+t;ans[index++]=tmp%10;t=tmp/10;}ans[index]=t;}i=index; while(ans[i]==0&&i>r1+r2)i--;//去除前面0 printf("%s * %s = ",a,b);//i>r1+r2 0.保证小数点前至少有整数 for(;i>=0;i--){printf("%d",ans[i]);if(i==(r1+r2)&&r1+r2)//小数点位数0 不输出 printf(".");}printf("\n");}return 0;}
0 0
- 128 带有小数的浮点数 大数乘法
- 大数的乘法(包括浮点数)
- 【字符串】大数的乘法(包括浮点数)
- js 中的数字(带有两位小数的浮点数)计算
- 浮点数的大数加法
- 获得一个浮点数的小数位数
- DB2取浮点数的小数部分
- 截取浮点数的小数位数
- 浮点数保留小数
- javascript 中浮点数乘法的问题
- 单精度浮点数乘法的实现
- POJ1001 Exponentiation--浮点数的高精度乘法
- 浮点数的大数加法模板
- 大数与整形数的乘法
- 大数相乘 - 浮点数
- 大数浮点数加法
- 浮点数不一定等于小数
- JavaScript中浮点数的保留小数位数的问题
- 极光推送随笔
- 用C语言扩展Python的功能
- 修改了root帐户的登录用户名
- Size-limited queue that holds last N elements in Java
- C++虚函数表与重载
- 128 带有小数的浮点数 大数乘法
- webservice jersey 文件上传
- linux建立虚拟磁盘
- php-5.6.2-Win32-VC11-x64.zip+ apache2.4.10 +php_xdebug-2.2.5-5.6-vc11-x86_64.dll+mysql5.6安装配置
- 实现两个HorizontalView的水平联动
- Fuel 30 分钟快速安装openstack
- Visual Studio插件开发- EnvDTE的使用
- STM32 APB1和APB2的区别
- 程序猿之---C语言细节10(++操作很可能你会出错)