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