C小数转换分数的函数

时间:2012-04-17 12:25:21
【文件属性】:

文件名称:C小数转换分数的函数

文件大小:2KB

文件格式:TXT

更新时间:2012-04-17 12:25:21

小数 分数 C C++

小数转换为分数的C++代码,能将十进制的小数转化为分子与分母都是整数的分数,换句话说,这个算法能够自动判定循环节。任何十进制数值都能被转化为一个指定精度的分数。 这个算法的根本原理是:一个分数对应一条直线的斜率。用数学语言描述就是:一条直线的斜率是无穷大(垂直于X轴)或者是(Y2-Y1) / (X2-X1),我们要做的就是找到2个整数,在指定的精度范围内接近这个斜率。对于正数来说,我们设置分子为0,分母为1,然后比较这个分数同给定的十进制数。如果我们的分数太小了(比如,我们选择的点在直线的下面),我们就加大分子的值直到这个分数太大(比如,这个点在直线的上方),之后我们在增加分母的大小直到这个点在直线下方。如果我们的最终目标是无理数(无限不循环小数),这个算法将一直继续,增加分子和分母,直到最终结果在指定的精度上。


网友评论

  • 能看懂,思想不错,感谢
  • 很好用,谢谢
  • 思想不错,不过复杂度太高了,不好理解
  • 还是挺不错,也不算太复杂,谢谢了
  • 思想不错,不过复杂度太高了
  • 不适合循环小数