无限精度除法运算
心血来潮写了个可进行无限精度除法运算的算法。算法类似手动计算除法,相除得到商和余数,将商输出,余数扩大十倍,再用余数除以除数得到商,循环往复即可无限精度计算除法了。但由于我用的是int类型,事实上不能真正的“无限”精度,C语言最高精度没验证,C#中测试最多只能算到32767位小数。更改类型当然可算得更精确,本文只是抛砖引玉,就不继续深入探讨了,C语言代码如下:
#include "stdio.h"
void Chu(int a,int b,int n) // 无限精度除法,a除以b,n为小数位数
{
int x,i;
x=a/b;
printf("%d.",x);
a=(a%b)*10;
for(i=1;i<=n;i++)
{
x=a/b;
printf("%d",x);
a=(a%b)*10;
}
printf("n");
}
void main()
{
int a,b,n;
while(1)
{
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&n);
Chu(a,b,n);
}
}
效果如图:

我用C#做了GUI界面,并统计了运算时间,代码、程序存在下图中,下载图片,改后缀为rar即可解压。

可见运算效率并不高,像数学软件Mathematica、Matlab等都是用矩阵进行运算的,计算速度很快,本程序的算法只能说实现了功能,根本不实用,就当做一次C语言练习吧。