求高精度算法源码

lxzhou 2006-03-24 08:04:09
任意的两位实数相乘,如12.6897541 * 54789.214562147
要代码
...全文
182 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangcw_jun 2006-03-26
  • 打赏
  • 举报
回复
#include<iostream>
#include<string>
using namespace std;
void mul(int c[],int a[],int b[],int n,int m,int f1,int f2)
{
int i,j,k;
for(i=0;i<m+n;i++)
for(j=0;j<=i&&j<n;j++)
for(k=0;k<=i&&k<m;k++)
if(j+k==i)
c[i]+=a[j]*b[k];
for(i=0;i<n+m;i++)
if(c[i]>9)
{
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
for(i=n+m-1;i>=0;i--)
{
cout<<c[i];
if(i==f1+f2&&i)
cout<<".";
}

}
void main()
{
int a[100],b[100],c[100]={0};
string x,y;
int m,n,i,j,h,k,flag=0,f1=0,f2=0;
cin>>x;
cin>>y;
n=x.length();
m=y.length();
if(x.find('.')!=-1)
i=--n;
else
i=n;
if(x.find('.')!=-1)
j=--m;
else
j=m;
h=k=0;
while(i)
{
if(!flag&&x[h]=='.')
{
h++;
flag=1;
}
if(flag)
f1++;
a[--i]=x[h++]-'0';

}
flag=0;
while(j)
{
if(!flag&&x[k]=='.')
{
k++;
flag=1;
}
if(flag)
f2++;
b[--j]=y[k++]-'0';

}

mul(c,a,b,n,m,f1,f2);
}
能实现大数相乘
逸学堂 2006-03-26
  • 打赏
  • 举报
回复
利用数组,实现精度计算。、

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧