无限精度除法运算

心血来潮写了个可进行无限精度除法运算的算法。算法类似手动计算除法,相除得到商和余数,将商输出,余数扩大十倍,再用余数除以除数得到商,循环往复即可无限精度计算除法了。但由于我用的是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语言练习吧。