永发信息网

C++将小数(double)转化为分数(Rational)

答案:2  悬赏:50  手机版
解决时间 2021-07-26 03:11

在C++中如何实现将小数转化为分数?

我的想法是将小数的每一个数字转化为字符,再计算字符串的长度,但不知道如何做

最佳答案
相信编码你应该没问题
就提供给你一个我的思路吧
3.134
转换成字符串
无非分两段
整数部分 分数部分
整数部分先用int强制转换获取
然后除10直到0为止获取每位数
至于小数部分
可以每次乘10 然后取整数部分记录
再判断小数部分是否为0 循环来找
原值减去整数部分就是小数部分
小数部分
全部回答

C++中double类型的“长度”(位数)是很长的,就算像1.0/2=0.5也会存成0.50000...具体是多长跟编译器有关。一般来说,先确定了小数位数才能转成分数。比如说约定出现连续的若干个0的时候就舍弃这些0以及之后的部分(有限小数),或者找到循环节再用数学方法(求极限)推出这个分数,至于那些没有上面两种特征的小数显然是无理数或者存的位数不够,无法化成分数

把一个数的小数部分转成字符很容易

s=(int)x;

x=x-s;

i=0;

while(i<n) //要保存n位

{

x=x*10;

a[i]=((int)x)%10;

i++;

}

这样程序结束后a[i]就保存了x的n位小数,当然n不能定的太大,超过int32(有对x取整的操作)

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
DNF启动后哪个框不出来啊
g:C→C,ω∈C,a∈C,ω^3=1,ω≠1.证明有且仅
怎么在右键新建里有WORD?
失败后应该作什么?
游戏城寨什么时候停刊的?
柜面人员业务操作问题
离婚了,又失去了联系。儿子想妈妈怎么办?
数机世界手机连锁泗泾店我想知道这个在什么地
几道找错题,速求!!
写出下面时兴词语的通常说法.物流,另类,瘦身,
农场一直在数据初始话中,进不去 是为什么?
怎么样叫头发留的快一些
混灭SS下FB输出该用什么雕文好啊?
行货N79怎么样才能成3G的制式
我生辰1987年4月26日,中午13点半左右,麻烦
推荐资讯
为什么QQ飞车没有中文歌曲
板栗可以煮着吃吗,生栗子发芽了还能吃吗?
结婚之前必须定婚吗?
每天跳绳3000下一个月能瘦多少?
2009乐从美食节地址
梦见捉好多鱼
谁能提供《青春爱情事件》这部电影的观看网站
普来达怎么看隐藏信息
Sleeps quickly, in does not sleep, the con
什麼才說有錢?
光影魔术手能做出这种效果的字么?
电脑开机慢,怎么办,有好方法吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?