C语言实例:计算分数的精确值

2014-11-17 16:24:40 · 作者: · 浏览: 164

  使用数组精确计算M/N(0


  *问题分析与算法设计


  由于计算机字长的限制,常规的浮点运算都有精度限制,为了得到高精度的计算结果,就必须自行设计实现方法。


  为了实现高精度的计算,可将商存放在一维数组中,数组的每个元素存放一位十进制数,即商的第一位存放在第一个元素中,商的第二位存放在第二个元素中....,依次类推。这样就可以使用数组不表示一个高精度的计算结果。


  进行除法运算时可以模拟人的手工操作,即每次求出商的第一位后,将余数乘以10,再计算商的下一位,重复以上过程,当某次计算后的余数为0 时,表示M/N为有限不循环小数某次计算后的余数与前面的某个余数相同时,则M/N为无限循环小数,从该余数第一次出现之后所求得的各位数就是小数的循环节。


  程序具体实现时,采用了数组和其它一些技巧来保存除法运算所得到的余数和商的各位数。


  *程序说明与注释


  #include


  int remainder[101],quotient[101]; /*remainder:存放除法的余数; quotient:依次存放商的每一位*/


  int main()


  {


  int m,n,i,j;


  printf("Please input a fraction(m/n)(<0


  scanf("%d/%d",&m,&n); /*输入被除数和除数*/


  printf("%d/%d it's accuracy value is:0.",m,n);