高精度计算 除法 高精除以低精
Posted xuwanwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度计算 除法 高精除以低精相关的知识,希望对你有一定的参考价值。
- 高精度就是很长很长的数字
- 低精就是可以直接存在基本类型(int short double...)的数字
- 两个正整数,一个是高精度,一个是低精度,求整除部分,不求余数。//其实就算要负数也很好解决
-
//两个正整数,高精度除以低精度,只求整除部分,不求余数 #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int main() { char a1[100]; int a[100],ans[100],lena,rm=0,lenans,b; //高精a除以低精b memset(a,0,sizeof(a)); memset(ans,0,sizeof(ans)); gets(a1); cin>>b; //!lena=a1.strlen();这样的写法是错误的,区别stirng类的s.length()和char[]的strlen(char[]); lena=strlen(a1); for(int i=1;i<=lena;i++) //顺序 { a[i]=a1[i-1]-48; } for(int i=1;i<=lena;i++) { ans[i]=(rm*10+a[i])/b; //注意这里是都是对第i位操作 rm=(rm*10+a[i])%b; //每次算的余数都是这个rm,直接用"%"符号就可以了 } lenans=1; while(ans[lenans]==0&&lenans!=lena) { lenans++; } for(int i=lenans;i<=lena;i++) //通过控制输出来删除前导 ,因为很难删除数组的元素,数组不像动态链表那样用delete { cout<<ans[i]; } cout<<endl; }
- %--求余的好工具
- 区别
-
string a; cin>>a; int lena; lena=s.length();
-
char a[100]; gets(a); int lena; lena=strlen(a);
- 注意一个是用“.”点来访问的,一个是调用strlen()函数,可以看出strlen()函数的返回值为一个数字
-
以上是关于高精度计算 除法 高精除以低精的主要内容,如果未能解决你的问题,请参考以下文章