没有合适的资源?快使用搜索试试~ 我知道了~
C小数转换分数的函数
5星 · 超过95%的资源 需积分: 43 74 下载量 148 浏览量
2009-03-28
18:38:41
上传
评论 1
收藏 2KB TXT 举报
温馨提示
试读
3页
小数转换为分数的C++代码,能将十进制的小数转化为分子与分母都是整数的分数,换句话说,这个算法能够自动判定循环节。任何十进制数值都能被转化为一个指定精度的分数。 这个算法的根本原理是:一个分数对应一条直线的斜率。用数学语言描述就是:一条直线的斜率是无穷大(垂直于X轴)或者是(Y2-Y1) / (X2-X1),我们要做的就是找到2个整数,在指定的精度范围内接近这个斜率。对于正数来说,我们设置分子为0,分母为1,然后比较这个分数同给定的十进制数。如果我们的分数太小了(比如,我们选择的点在直线的下面),我们就加大分子的值直到这个分数太大(比如,这个点在直线的上方),之后我们在增加分母的大小直到这个点在直线下方。如果我们的最终目标是无理数(无限不循环小数),这个算法将一直继续,增加分子和分母,直到最终结果在指定的精度上。
资源推荐
资源详情
资源评论
/*
原来CSDN上有个用delphi写的,我依葫芦画瓢用VC重写了一下,不过原理是一样的。
这个算法的根本原理是:一个分数对应一条直线的斜率。用数学语言描述就是:一条直线
的斜率是无穷大(垂直于X轴)或者是(Y2-Y1) / (X2-X1),我们要做的就是找到2个整数,
在指定的精度范围内接近这个斜率。对于正数来说,我们设置分子为0,分母为1,然后比
较这个分数同给定的十进制数。如果我们的分数太小了(比如,我们选择的点在直线的下
面),我们就加大分子的值直到这个分数太大(比如,这个点在直线的上方),之后我们
在增加分母的大小直到这个点在直线下方。如果我们的最终目标是无理数(无限不循环小
数),这个算法将一直继续,增加分子和分母,直到最终结果在指定的精度上。
我测试的不够细致,如果有什么问题大家可以和我交流,xu044@163.com。
*/
#include <stdlib.h>
#include <iostream.h>
#include <math.h>
int main()
{
int iDecimal;
int iNumerator, iDenominator, iNegative;
double dFraction, dDecimal, dAccuracy, dInteger;
cout << "请输入你要转换的数:";
cin >> dDecimal;
iDecimal = (int)dDecimal; //取整数部分,以在下一步判断输入的是否为整数
if(iDecimal == dDecimal) //判断输入是否为整数,若是则直接输出
原来CSDN上有个用delphi写的,我依葫芦画瓢用VC重写了一下,不过原理是一样的。
这个算法的根本原理是:一个分数对应一条直线的斜率。用数学语言描述就是:一条直线
的斜率是无穷大(垂直于X轴)或者是(Y2-Y1) / (X2-X1),我们要做的就是找到2个整数,
在指定的精度范围内接近这个斜率。对于正数来说,我们设置分子为0,分母为1,然后比
较这个分数同给定的十进制数。如果我们的分数太小了(比如,我们选择的点在直线的下
面),我们就加大分子的值直到这个分数太大(比如,这个点在直线的上方),之后我们
在增加分母的大小直到这个点在直线下方。如果我们的最终目标是无理数(无限不循环小
数),这个算法将一直继续,增加分子和分母,直到最终结果在指定的精度上。
我测试的不够细致,如果有什么问题大家可以和我交流,xu044@163.com。
*/
#include <stdlib.h>
#include <iostream.h>
#include <math.h>
int main()
{
int iDecimal;
int iNumerator, iDenominator, iNegative;
double dFraction, dDecimal, dAccuracy, dInteger;
cout << "请输入你要转换的数:";
cin >> dDecimal;
iDecimal = (int)dDecimal; //取整数部分,以在下一步判断输入的是否为整数
if(iDecimal == dDecimal) //判断输入是否为整数,若是则直接输出
xu044
- 粉丝: 3
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页