把一个小数转成为分数,求算法

pmars 2011-01-26 05:01:48
比如:
0.88 -> 22/25
0.33... -> 1/3
0.22... -> 2/9
0.474612399... -> 1186531/2500000
...全文
1241 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pmars 2011-01-27
  • 打赏
  • 举报
回复
恩,如此这般,谢谢各位了!!
zhoubing0206 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pmars 的回复:]
引用 3 楼 wizard_tiger 的回复:

0.33……是3/(10-1)
0.22……是2/(10-1)
0.2323……是23/(100-1)
关键是如何判断你这个数是个无限循环小数。

在弱弱的问一下:
如果是这样的数据呢?
0.474612399... -> 1186531/2500000
后面的9是循环的。。。
[/Quote]

你怎么输入这个数呢,肯定分 循环小数前 和 循环小数 两部分输入的
两部分分别处理再加一下咯

lzc52151 2011-01-27
  • 打赏
  • 举报
回复 1
1、如果是大于1的小数,把整数、小数部分单拿出来,当把小数部分转成真分数,再加整数部分成假分数即可。
2、对小于1的小数,分两种情况,有限小数和无限循环小数。
2.1、对有限小数比如0.326688=326688/1000000,这就转成真分数了,然后求分子分母的最大公约数,分子分母约去最大公约数即成最简真分数。
2.2、对无限循环小数又分两部分,不循环部分和循环部分。比如0.12356987987987……=0.12356+0.00000987987987……
不循环部分的求解参见2.1,循环部分可以如下求解。
x=0.00000987987987……
y=100000x=0.987987987……
1000y-y=987(循环节)
y=987/(1000-1)
x=y/100000
循环部分的值即为x
最后把不循环部分和循环部分两个分数相加即可
hangzhouhao 2011-01-27
  • 打赏
  • 举报
回复
分解成一个有限小数和单纯的循环数:
0.00000009...=0.0000001

[Quote=引用 7 楼 pmars 的回复:]
引用 3 楼 wizard_tiger 的回复:

0.33……是3/(10-1)
0.22……是2/(10-1)
0.2323……是23/(100-1)
关键是如何判断你这个数是个无限循环小数。

在弱弱的问一下:
如果是这样的数据呢?
0.474612399... -> 1186531/2500000
后面的9是循环的。。。
[/Quote]
pmars 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wizard_tiger 的回复:]

0.33……是3/(10-1)
0.22……是2/(10-1)
0.2323……是23/(100-1)
关键是如何判断你这个数是个无限循环小数。
[/Quote]
在弱弱的问一下:
如果是这样的数据呢?
0.474612399... -> 1186531/2500000
后面的9是循环的。。。
hangzhouhao 2011-01-27
  • 打赏
  • 举报
回复
正解,找到循环的数字(可能是连续的几个),就可以求出对应的真分数了。

[Quote=引用 3 楼 wizard_tiger 的回复:]
0.33……是3/(10-1)
0.22……是2/(10-1)
0.2323……是23/(100-1)
关键是如何判断你这个数是个无限循环小数。
[/Quote]
Joe-xXx 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pmars 的回复:]

引用 1 楼 wo65432519 的回复:

参考:
http://topic.csdn.net/t/20040805/14/3245444.html

http://hi.baidu.com/wei370/blog/item/5583b60794392785d53f7c68.html

可以给0.33...转化成???
是33/100 , 还是 1/3 ?
这个里面有循环啊……
[/Quote]

将大于1部分去掉不就成真分数了啊!
pstrunner 2011-01-27
  • 打赏
  • 举报
回复
应该达到一定精度就可以了吧。

[Quote=引用 3 楼 wizard_tiger 的回复:]
0.33……是3/(10-1)
0.22……是2/(10-1)
0.2323……是23/(100-1)
关键是如何判断你这个数是个无限循环小数。
[/Quote]
wizard_tiger 2011-01-27
  • 打赏
  • 举报
回复
0.33……是3/(10-1)
0.22……是2/(10-1)
0.2323……是23/(100-1)
关键是如何判断你这个数是个无限循环小数。
pmars 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wo65432519 的回复:]

参考:
http://topic.csdn.net/t/20040805/14/3245444.html

http://hi.baidu.com/wei370/blog/item/5583b60794392785d53f7c68.html
[/Quote]
可以给0.33...转化成???
是33/100 , 还是 1/3 ?
这个里面有循环啊,照那个java的方法可能不行啊,因为无法先给他转化成真分数啊。。
zhuxueling 2011-01-27
  • 打赏
  • 举报
回复
0.11111 = 1/9 = 11/99 = ...
0.12121212 = 12/99 = 1212/9999 = ....
0.123123123= 123/999=123123/999999=...
Joe-xXx 2011-01-26
  • 打赏
  • 举报
回复
参考:
http://topic.csdn.net/t/20040805/14/3245444.html

http://hi.baidu.com/wei370/blog/item/5583b60794392785d53f7c68.html

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧